Actionscript 3如何一次移动多个对象而没有延迟

Posted

技术标签:

【中文标题】Actionscript 3如何一次移动多个对象而没有延迟【英文标题】:Actionscript 3 how to move many object at once without lag 【发布时间】:2013-08-28 06:57:09 【问题描述】:

我有一个简单的问题。 我正在使用 actionscript 3.0 和 Adob​​e flash Professional cs6 来制作游戏。我想让它保持简单、干净且不拖沓,但对于我的游戏,我需要许多(10-30)个电影剪辑同时在屏幕上以不同的方式移动。我想为 Event.ENTER_FRAME 事件使用基于时间的动画,但我不知道是否让每个人(因为它们都是可以做到这一点的超类所固有的)movieclip 跟踪自己的时间并自行移动这样,或者让管理器类跟踪时间,然后以时间作为参数调用所有影片剪辑的函数。我想知道到底哪个更快。

【问题讨论】:

这里有一个很棒的帖子,可以回答这个问题以及更多问题 - ***.com/questions/8380789/… 谢谢,正是我要找的东西 如果你想要一流的性能,你应该使用像 Starling gamua.com/starling这样的 2d GPU 加速框架 【参考方案1】:

要添加到上面链接的最佳答案,您应该仔细考虑并计划您的游戏的哪些组件需要最多的关注和优化。试图优化各个方面将变得非常繁琐且难以管理。除此之外,某些类型的优化不能同时发生(例如,您通常不能同时针对速度和内存消耗进行优化,因为改进其中一个会降低另一个)。

例如 - 如果您知道您的游戏将在屏幕上发生很多事情(大量图形和效果),那么您应该认真考虑一个专注于渲染性能的库,例如 Starling,它利用了较新的Stage3D API 可极大提高绘图速度。

如果在另一个示例中,您的游戏需要在对象之间进行大量测量并实现光线投射和寻路等功能,那么您应该研究如何为您的游戏构建一个能够最有效地运行这些算法的网格。

至于清洁度,特别是当您提到Event.ENTER_FRAME 时,您应该只在游戏的主类(或类似的处理程序类)中为此事件实现一个处理程序。您的实际游戏对象应列在此类的数组中,并且 enterFrame 处理程序应遍历该数组并在每个数组上调用一个函数,即update() 或类似的。

【讨论】:

最后一段是我真正想要的,我会毫不犹豫地抬头看看到底是什么。谢谢

以上是关于Actionscript 3如何一次移动多个对象而没有延迟的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Adob​​e Flash Professional CS6 Action Script 3.0 中阻止可移动对象(通过箭头键移动)离开舞台

ActionScript 3 实例化一个对象并将其添加到显示列表并一次性给它一个名称

如何使子弹移动 Actionscript 3.0

ActionScript 3 如何在eclipse中的工作区之间移动片段

使用带有移动对象的 OpenGL 实例化绘图

ActionScript 3 中基于 mouseY 的垂直滚动