情况:我有一个ViewStack
有两个孩子(Panel
类型)。
应用程序从子项1开始为SelectedChild
。
单击按钮,子项2是SelectedChild。在那之后,我回到孩子1是SelectedChild。
当我在Flash Player中单击Show Redraw Regions
时,我可以看到孩子2一直在重绘(我在孩子2中有一些移动物体)。我怎样才能防止这种情况发生?或者这只能通过实际删除不可见(在这种情况下是孩子2)的孩子来完成吗?
为什么我要实现这个目标?子2将包含相当多的数据(flv,图像等),当它被缓存时,就像现在发生的那样,它会减慢我的应用程序。
答案 0 :(得分:1)
Flash中效率低下的主要原因可能来自显示列表中的不可见对象。它们不仅继续导致重绘区域刷新(“红色矩形”),当玩家需要遍历显示列表树时,它们会对Flash处理施加CPU惩罚。当显示列表较大时,即使您没有任何MouseEvent侦听器,鼠标悬停也会显得更加昂贵。任何包含超过几千个对象的显示列表都会开始感受到痛苦。
长话短说,有时性能要求您编写自己的“可见性管理器”来交换对象进出父层次结构,作为切换DisplayObject.visible的替代方法。
答案 1 :(得分:0)
我已经明白了:唯一的方法似乎是真正删除了孩子,或者它正在移动/动画内容。
像Amarghosh提到的那样呼叫video.stop()
,animation.stop()
也应该有所帮助。