Javascript 请求动画帧之前的不必要延迟?
一个有趣的例子,IE实际以我想要的方式运行:-)我通过requestAnimationFrame制作了这个函数来制作SVG动画(在这个例子中,我省略了值计算等…但我的第一个实验是制作对SVG矩形的“fill”属性的更改的动画)。不管怎么说,动画运行得又快又好。。。但是所有其他浏览器在运行动画之前都有明显的延迟。就像那些浏览器每次都需要“加速”引擎来处理这个问题一样。。。另外,我在网上看了一些其他的例子,其中一些动画看起来“波涛汹涌”。我想我可以在IE上使用requestAnimationFrame,在其他浏览器上使用CSS3关键帧:-(我真的不想这么做。我是不是遗漏了什么?为什么在播放动画之前会有延迟Javascript 请求动画帧之前的不必要延迟?,javascript,css,animation,svg,requestanimationframe,Javascript,Css,Animation,Svg,Requestanimationframe,一个有趣的例子,IE实际以我想要的方式运行:-)我通过requestAnimationFrame制作了这个函数来制作SVG动画(在这个例子中,我省略了值计算等…但我的第一个实验是制作对SVG矩形的“fill”属性的更改的动画)。不管怎么说,动画运行得又快又好。。。但是所有其他浏览器在运行动画之前都有明显的延迟。就像那些浏览器每次都需要“加速”引擎来处理这个问题一样。。。另外,我在网上看了一些其他的例子,其中一些动画看起来“波涛汹涌”。我想我可以在IE上使用requestAnimationFram
animateViaRequestAnimationFrame = function() { //
var duration = arguments[0].duration;
// requestAnimationFrame is ~60 frames/second
var quantityFrameCalls = parseInt((duration/1000)*60);
i = 1;
function callFrame(){
// here, bunch of values math and updating the target element properties
i++;
if (i < quantityFrameCalls+1) {
requestAnimationFrame(function(){
callFrame();
});
} // if
} // callFrame
requestAnimationFrame(function(){
callFrame();
});
}; // animateViaRequestAnimationFrame
animateViaRequestAnimationFrame=function(){//
var duration=参数[0]。持续时间;
//requestAnimationFrame约为60帧/秒
var quantityFrameCalls=parseInt((持续时间/1000)*60);
i=1;
函数callFrame(){
//这里,一组值用于计算和更新目标元素属性
i++;
如果(i
OMG.我错了,我在test rect上留下了一个css转换,延迟了转换。因此,Ben是正确的:-)嗯,至少我现在有一个超级酷的支持web worker的RAF动画功能。DOHOops,谢谢Ben,是的callFrame函数的启动会有帮助,不是吗:-)我确实有一些循环来转换十六进制值,但我不认为这些是减速,因为它们console.log是瞬时的,然后动画在延迟后播放。我想我只是想知道在浏览器中使用requestAnimationFrame是否有一些神奇的魔力,而不仅仅是一个非常简单的技巧,当您使用requestAnimationFrame(function(){callFrame();})代码>您实际上可以执行requestAnimationFrame(callFrame)代码>谢谢Patrick是的,我也尝试过这种方法。我认为导致问题的代码不在您的代码片段中。顺便说一句,RAF可能会以一系列不同的帧速率运行,所以计算帧数可能不是您想要的。我的第一个想法是检查放松功能……也许我应该试试网络工作者?也许使用一个web工作人员运行我的值计算,使用另一个web工作人员播放动画?或我应该实例化某种播放器对象吗?