我正在AS3中构建一个自定义的简单3D引擎,尽可能简单。它使用Graphics绘制所有内容并使用Bitmap和BitmapData渲染它。
为了按z(深度)位置重新排序绘图顺序,我使用Sprite的Transform实例的getRelativeMatrix3D。这是我的问题:如果我创建了很多Sprite实例,但是不要将它们作为舞台的孩子添加,那么它会降低我的演奏速度吗?
如果确实如此,那么有没有更有效和更有用的重新订购方式而不添加作为儿童的SPRITES?
如果没有,请告诉我。
谢谢! :)
答案 0 :(得分:1)
正如@Neil在评论中正确指出的那样,未添加到显示列表(添加到舞台)的对象不会影响渲染性能。
但是,使用 new 创建对象总是需要时间。因此,如果您编写的函数除了每帧创建1.000对象之外什么都不做,您可能会看到非常明显的性能下降。
但是,对于每种语言都是如此,因此根据经验,您只应在必要时创建新对象。
甚至可以重复使用不再需要的对象。看看object pool pattern,看看我的意思。例如,对象池通常用于sidescroller中的项目符号。但这些事情确实是性能改进的一部分。因此,如果您的时间不够而没有用户抱怨,我会在重构阶段进行此类优化。或者你马上做,你的选择;)