Performance 计算n个时钟还是运行两个不同的计时器更好

Performance 计算n个时钟还是运行两个不同的计时器更好,performance,actionscript-3,timer,flash-cs5,Performance,Actionscript 3,Timer,Flash Cs5,我在做一个蛇的游戏,每一个滴答声蛇都会移动。因为蛇在每个滴答声上移动一个完整的单位,所以动画是跳跃的。游戏在一个不可见的网格上,因此蛇只能在特定点改变方向。 如果有一个计时器,它可以一次移动蛇一个像素,用一个变量对它进行计数,并且在每n个刻度上运行代码以改变方向,这会被认为是更好的做法。还是最好有两个独立的计时器;一个用于一次移动蛇一个像素,另一个用于更改蛇的方向?本质上,您正在创建一个“游戏循环”来更新显示列表(在Actionscript中)并重新绘制视图。当游戏变得复杂时,计时器和监听ENT

我在做一个蛇的游戏,每一个滴答声蛇都会移动。因为蛇在每个滴答声上移动一个完整的单位,所以动画是跳跃的。游戏在一个不可见的网格上,因此蛇只能在特定点改变方向。


如果有一个计时器,它可以一次移动蛇一个像素,用一个变量对它进行计数,并且在每n个刻度上运行代码以改变方向,这会被认为是更好的做法。还是最好有两个独立的计时器;一个用于一次移动蛇一个像素,另一个用于更改蛇的方向?

本质上,您正在创建一个“游戏循环”来更新显示列表(在Actionscript中)并重新绘制视图。当游戏变得复杂时,计时器和监听ENTER_FRAME事件将受限于flashplayer屏幕刷新设置(即FPS)和CPU的渲染(基于任务处理)

对于与帧速率无关的动画,您可能应该使用ENTER_frame的组合来跟踪毫秒和调用,以便更准确地(以毫秒为单位)调用动画,并跨各种平台规范化体验

基本上,监听ENTER_FRAME事件,检查自上次更新以来的当前毫秒数,如果超过刷新率(以毫秒计),则触发动画/状态更新:使用“方向块”检查蛇碰撞检测-如果为真,则更新蛇的移动/位置/状态

Flash会以任何设置更新显示列表,并且会出现CPU/机器相关的问题。我发现,关键是要确保更新速度正常化,以使体验一致。计时器有其用途,但可能会导致内存性能问题。输入“帧同步到主时间轴/帧速率设置”


三年前的一次过时但有趣的讨论

非常有用的信息,但我想你误解了我的问题。我的蛇一次移动15像素,这让我很紧张,因为它在瞬间的距离很大。我想做的是让它一次移动1px,但每15次检查它是否需要改变方向,因为蛇应该沿着15x15像素的网格移动。计算滴答声并每滴答声运行moveSnake和每15滴答声运行changeDirection()是否更好。还是最好有两个独立的计时器?同时在信息计时器上记下并输入\u帧会占用相同的开销。不同之处在于,计时器在函数中的代码执行后开始计数,并根据启动后的时间输入_frame runs。这是非常有用的信息,我不知道,所以谢谢你。希望这个信息有帮助。我推荐前者,而不是后者。管理多个计时器是很有趣的,但在一天结束时,它不能很好地重新考虑(IMO)。