【问题标题】:AS3 setInterval Animation ChoppyAS3 setInterval Animation Choppy
【发布时间】:2014-08-15 20:35:25
【问题描述】:

以下动画策略在 AS3 中处理形状时变得非常不稳定。

setInterval(function():void {
    shape.x += 3;
},15);

我是 Flash 新手,我知道语言中内置了不同的动画机制,我可以轻松学习,但我只是想知道为什么这种特殊策略的动画效果如此糟糕。

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

【问题讨论】:

    标签: actionscript-3 flash animation


    【解决方案1】:

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

    或者,您可以在 topLevelApplication 上监听进入帧和退出帧事件以创建一个巧妙的事件循环,但像 GreenThreads 这样的东西已经很好地做到了。

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

    【讨论】:

    • 太棒了,感谢您提供的信息丰富的回复!那么 setInterval 最大的问题是每次连续调用函数时内存的重新分配?我会考虑你的两个建议,可能从基于事件的系统开始,因为这似乎更符合 AS3 的精神,如果组织得当,游戏动画更易于维护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多