Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Actionscript 3 AS3设定间隔动画起伏_Actionscript 3_Flash_Animation - Fatal编程技术网

Actionscript 3 AS3设定间隔动画起伏

Actionscript 3 AS3设定间隔动画起伏,actionscript-3,flash,animation,Actionscript 3,Flash,Animation,在AS3中,在操纵形状时,以下动画策略变得非常不稳定 setInterval(function():void { shape.x += 3; },15); 我是Flash新手,我知道语言中内置了不同的动画机制,我可以很容易地学习,但我只是想知道为什么这种特殊策略的动画效果如此糟糕 我使用了完全相同的技术,在完全相同的机器上使用JavaScript平滑地为HTML元素设置动画。AS3和JS处理setInterval循环的方式是否根本不同,导致一个循环比另一个循环更高效?Actionscr

在AS3中,在操纵形状时,以下动画策略变得非常不稳定

setInterval(function():void {
    shape.x += 3;
},15);
我是Flash新手,我知道语言中内置了不同的动画机制,我可以很容易地学习,但我只是想知道为什么这种特殊策略的动画效果如此糟糕


我使用了完全相同的技术,在完全相同的机器上使用JavaScript平滑地为HTML元素设置动画。AS3和JS处理setInterval循环的方式是否根本不同,导致一个循环比另一个循环更高效?

Actionscript/Flex在帧上执行。在一个框架上只能做这么多事情。当要执行的指令数超过帧的“可用时间”时,应用程序会变得缓慢且不稳定-这会阻止UI更新,因为帧中的其他指令仍在运行。此外,这种类型的操作成本很高-需要每15毫秒分配一次对象(内存分配成本很高+垃圾收集器成本),您应该改用计时器对象

或者,您可以在topLevelApplication上侦听EnterFrame和ExitFrame事件,以创建一个巧妙的事件循环,但像GreenThreads这样的东西已经做得很好了


此外,setInterval是JavaScript中的浏览器实现(它不是JavaScript语言的一部分,但所有浏览器都实现了它)。Flex为setInterval使用了一个Timer对象的变体。

太棒了,感谢您提供的信息性响应!所以setInterval最大的问题是每次连续函数调用时内存的重新分配?我将研究你的两个建议,可能从基于事件的系统开始,因为这似乎更符合AS3的精神,并且如果组织得好,游戏动画更易于维护。