Flex viewstack不断重绘不可见的孩子,如何修复?

时间:2009-12-07 12:38:43

标签: flex memory viewstack

情况:我有一个ViewStack有两个孩子(Panel类型)。 应用程序从子项1开始为SelectedChild

单击按钮,子项2是SelectedChild。在那之后,我回到孩子1是SelectedChild。

当我在Flash Player中单击Show Redraw Regions时,我可以看到孩子2一直在重绘(我在孩子2中有一些移动物体)。我怎样才能防止这种情况发生?或者这只能通过实际删除不可见(在这种情况下是孩子2)的孩子来完成吗?

为什么我要实现这个目标?子2将包含相当多的数据(flv,图像等),当它被缓存时,就像现在发生的那样,它会减慢我的应用程序。

2 个答案:

答案 0 :(得分:1)

Flash中效率低下的主要原因可能来自显示列表中的不可见对象。它们不仅继续导致重绘区域刷新(“红色矩形”),当玩家需要遍历显示列表树时,它们会对Flash处理施加CPU惩罚。当显示列表较大时,即使您没有任何MouseEvent侦听器,鼠标悬停也会显得更加昂贵。任何包含超过几千个对象的显示列表都会开始感受到痛苦。

长话短说,有时性能要求您编写自己的“可见性管理器”来交换对象进出父层次结构,作为切换DisplayObject.visible的替代方法。

答案 1 :(得分:0)

我已经明白了:唯一的方法似乎是真正删除了孩子,或者它正在移动/动画内容。

像Amarghosh提到的那样呼叫video.stop()animation.stop()也应该有所帮助。