假设有一个div,你要它沿着这条斜线运动,那么代码可能是这样写的:
for:
div.w = w;
div.h = h;
由于JS是串行执行的的,所有的编程语言,这种写法时运行都是串行往下执行的吧
那么问题就来了,实际上这个div并不是真正的做斜线运动的,而是一卡一卡的向右往下运动,用图来表示:
也就是说原来我们做的完美的动画都是“假”的啊!
我竟然从来没有意识到这个问题,真是恶心死了,我怎么才能做出真正的动画呢?
求大神指点哈:)
假设有一个div,你要它沿着这条斜线运动,那么代码可能是这样写的:
for:
div.w = w;
div.h = h;
由于JS是串行执行的的,所有的编程语言,这种写法时运行都是串行往下执行的吧
那么问题就来了,实际上这个div并不是真正的做斜线运动的,而是一卡一卡的向右往下运动,用图来表示:
也就是说原来我们做的完美的动画都是“假”的啊!
我竟然从来没有意识到这个问题,真是恶心死了,我怎么才能做出真正的动画呢?
求大神指点哈:)
如果你深入了解一下浏览器的 JS 解析和页面渲染过程,你就会知道你设置了 div.w 之后浏览器并不会立即重绘 div 的位置,而是等“空闲”时再对页面进行重绘。因此这段代码实际执行过程中,并不会出现阶梯型的轨迹,而会是对角线轨迹。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
怎么会呢,在JS代码执行的时候,浏览器是不知执行渲染动作的~~~
只是你绘制的频率不够块的时候,动画会出现跳跃的现象,一般每秒24帧就可以实现联系的动画而不出现跳帧。但在计算机中还涉及到下一帧动画状态及位置等计算工作,往往24帧是不够的,要保持在每秒60帧,即使这样还是可能出现跳帧,例如在游戏等需要大量高速计算的情况下~~这个也是对游戏性能的一个重要的参考指标