requestAnimationFrame没有等待下一帧
requestAnimationFrame not waiting for the next frame
感谢您的登录!
据我所知(这可能是错误的)JavaScript的requestAnimationFrame方法与setTimeout类似(有点),只是它不等待一定的时间,而是等待下一帧的渲染。
这可以用于很多事情,但我在这里试图实现的是基于CSS的JavaScript控制的渐变效果。下面是代码的样子和解释:
//This line makes the element displayed as block from none
//but at this point it has an opacity value of 0
this.addClass('element__displayed');
//here i am waiting a frame so that the previously added
//display value takes effect
window.requestAnimationFrame(function(){
//adding opacity: 1 for fade effect
this.addClass('element__visible');
}.bind(this));
我的问题是,即使元素已经设置了css转换,并且我正在等待显示值的呈现,但我没有得到转换,它只是弹出。
(如果我使用setTimeout(…,1000/60),它是有效的,但与requestAnimationFrame相比,setTimeout是一个性能瓶颈)
请不要试图为渐变效果提供替代解决方案,因为我的问题不是效果,而是为什么animationFrame不起作用!
谢谢!
I认为requestAnimationFrame不能保证等待下一帧。Paul Irish撰写
事件处理程序中排队的任何rAF都将在同一帧.在rAF中排队的任何rAF都将在下一帧中执行.
如果改编了你的演示,它现在在Chrome上对我有效:https://jsfiddle.net/ker9zpjs/
我曾经在我的工具箱里找到过这个助手:
var nextFrame = function(fn) { raf(function() { raf(fn); }); };
但我必须承认,我的答案还没有得到充分的研究,如果有人能找到更好的信息,我也会很感激
相关文章:
- 我是否可以在渲染过程中使用三.js合并每一帧中的几何体
- 使用Javascript移动到同一页面中的另一帧
- 如何使用onmouseover打开另一帧中的链接
- 优化帮助:使用程序调用每一帧和低FPS
- 视频.js最后一帧图像
- HTML5 动画绘制在上一帧之上
- JavaScript中一帧的冲突检测
- 删除或隐藏上一帧中的图像-html 5画布
- 如何将击键传播到HTML页面中的每一帧
- 嵌入youtube视频与最后一帧
- 在每一帧中选择元素
- 如何确定碰撞是新的还是从上一帧继续
- 为什么在三维渲染函数中,while循环不更新每一帧?
- CSS3最后一帧动画之后的循环在动画序列中完成
- 在three.js的下一帧之前清除屏幕
- 在谷歌浏览器上从一帧到一帧的复杂框架结构(3色,每行3行)
- 从另一帧刷新另一帧.Jquery
- 从一帧内跳出一帧
- 复选框计数在另一帧上
- requestAnimationFrame没有等待下一帧