Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请求动画帧之前的不必要延迟?_Javascript_Css_Animation_Svg_Requestanimationframe - Fatal编程技术网

Javascript 请求动画帧之前的不必要延迟?

Javascript 请求动画帧之前的不必要延迟?,javascript,css,animation,svg,requestanimationframe,Javascript,Css,Animation,Svg,Requestanimationframe,一个有趣的例子,IE实际以我想要的方式运行:-)我通过requestAnimationFrame制作了这个函数来制作SVG动画(在这个例子中,我省略了值计算等…但我的第一个实验是制作对SVG矩形的“fill”属性的更改的动画)。不管怎么说,动画运行得又快又好。。。但是所有其他浏览器在运行动画之前都有明显的延迟。就像那些浏览器每次都需要“加速”引擎来处理这个问题一样。。。另外,我在网上看了一些其他的例子,其中一些动画看起来“波涛汹涌”。我想我可以在IE上使用requestAnimationFram

一个有趣的例子,IE实际以我想要的方式运行:-)我通过requestAnimationFrame制作了这个函数来制作SVG动画(在这个例子中,我省略了值计算等…但我的第一个实验是制作对SVG矩形的“fill”属性的更改的动画)。不管怎么说,动画运行得又快又好。。。但是所有其他浏览器在运行动画之前都有明显的延迟。就像那些浏览器每次都需要“加速”引擎来处理这个问题一样。。。另外,我在网上看了一些其他的例子,其中一些动画看起来“波涛汹涌”。我想我可以在IE上使用requestAnimationFrame,在其他浏览器上使用CSS3关键帧:-(我真的不想这么做。我是不是遗漏了什么?为什么在播放动画之前会有延迟

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动画功能。DOH

Oops,谢谢Ben,是的callFrame函数的启动会有帮助,不是吗:-)我确实有一些循环来转换十六进制值,但我不认为这些是减速,因为它们console.log是瞬时的,然后动画在延迟后播放。我想我只是想知道在浏览器中使用requestAnimationFrame是否有一些神奇的魔力,而不仅仅是一个非常简单的技巧,当您使用
requestAnimationFrame(function(){callFrame();})您实际上可以执行
requestAnimationFrame(callFrame)谢谢Patrick是的,我也尝试过这种方法。我认为导致问题的代码不在您的代码片段中。顺便说一句,RAF可能会以一系列不同的帧速率运行,所以计算帧数可能不是您想要的。我的第一个想法是检查放松功能……也许我应该试试网络工作者?也许使用一个web工作人员运行我的值计算,使用另一个web工作人员播放动画?或我应该实例化某种播放器对象吗?