【发布时间】:2012-03-11 09:10:23
【问题描述】:
Flash 如何处理舞台外的元素?
显然 Flash 并没有实际渲染它们(因为它们不会出现在屏幕上的任何位置),但是渲染它们的过程是否仍然存在,这会减慢我的游戏速度,就像元素在屏幕上一样?
或者 Flash 是否会智能地忽略不属于可渲染区域的元素?
我是否应该手动管理从DisplayList 中移除对象并将它们重新添加为出口并进入舞台,或者这将无关紧要?
【问题讨论】:
-
你可以写一个简单的测试。虽然它们没有被渲染,但它们仍然在层次结构中,并且可能正在做一些令人讨厌的事情,比如动画、执行脚本和调度大量事件。
-
我认为对象的实际绘制消耗了大部分性能 - 因此,当它们不在舞台上时,这应该不是问题。但正如 valentin 所说,当他们仍在“执行脚本和/或发送大量事件”时,他们肯定会减慢整个游戏的速度。如果他们不会重新出现在舞台上,就摧毁他们——如果他们愿意,试着“暂停”他们,直到他们重新出现......
-
我同意您应该编写一些测试,获取一大堆对象并在屏幕内外设置动画,使用 Flash Builder 分析器您应该能够找到任何瓶颈。我会测试只是看到它们离开屏幕,并测试 removeChild() 并在离开屏幕后可见,但不要使用 alpha 0。
标签: performance flash actionscript-3 rendering