【发布时间】:2013-04-23 21:10:15
【问题描述】:
我正在尝试在 AS3 / Flex 4 中编写一个简单的游戏,并且我正在尝试从一开始就找到处理代码定时执行的最佳方法。
最自然的方法是在整个程序中使用一堆Timer 对象。然而,与 ENTER_FRAME 相比,这在 CPU 周期上的成本应该很高。
但是我不确定将所有程序的定时执行都基于ENTER_FRAME 是否自然,并且我在stackoverflow 上读到它有问题-Timer 没有-关于当程序复杂度增加时,将动画和帧率拉低。
想到的另一个选择是在程序中简单地使用一个Timer 对象,它的事件处理程序将遍历并检查所有内容 - 有点像混合通常的Timer 和ENTER_FRAME接近。
我的问题是:对于 AS3/Flex 4 中的视频游戏来说,真正的最佳创意是什么,为什么?谢谢!
【问题讨论】:
-
在我看来,最好的方法是使用一个主定时器或ENTER_FRAME。然后在该计时器内,只需调用游戏中需要时间的每个对象的更新函数。计时器可能是您最好的选择。
-
这是一篇关于定时器使用主题的不错的文章 - bit-101.com/blog/?p=910 - 我个人使用过这两种方法,不能说这两种方法都产生了重大影响。我倾向于使用 ENTER_FRAME 并计算帧之间的时间以进行运动计算并更新所有对象。我会更详细地介绍,但互联网上确实已经有大量关于这场辩论的信息,只需 google 一下。
-
从阅读中我很难判断使用 ENTER_FRAME 或单个 Timer 是否真的有任何特别的优势。听起来使用多个计时器的想法很糟糕。
-
是的,我真的会专注于更大的问题,比如制作你的游戏。从一个切换到另一个真的很简单,正如我所说,我不能说我经历了一个重要的因素,使一个或另一个成为一个明确的选择。我发布的文章只是为了让您了解 Timers 的行为,这可能不是您所期望的。
-
我忘了提到我喜欢 ENTER_FRAME 的一个主要优点是它与 Flash 播放器的渲染过程直接相关。 ENTER_FRAME 处理程序中发生的任何事情都会在每个帧渲染之前执行。使用 Timer 事件,不能保证您不会偶尔在给定帧中执行两次更新,因为您的更新和渲染不同步。同样,那里有关于这个主题的信息。
标签: actionscript-3 apache-flex events timer flex4