隐藏或删除不在屏幕上的MovieClip会更好吗?

时间:2013-07-01 16:19:51

标签: actionscript-3 flash actionscript

我正在编写一个用ActionScript 3编写的Flash程序,我试图确定是否应该将它们从舞台上移除,当它们不在屏幕上时,或者只是当它们在屏幕外时停止移动它们观景区。如果我一旦移出观看区域就不会删除Child()MovieClip,我可能最终会在舞台上结束数万个MovieClip(虽然不在视图中)。

在不在视图中时,是否存在隐藏与删除MovieClip的标准建议?

基本上,我试图找出:

  1. 在舞台上但在观看区域外使用MovieClip会占用大量资源吗?
  2. 从舞台上移除和添加MovieClip会有多少惩罚?
  3. 在您应该从一种方法切换到另一种方法之前,是否估计了您正在使用多少个MovieClip?
  4. 谢谢!

    - EDIT-- 在我的程序中,MovieClips通常必须重新出现在屏幕上。这意味着当我从舞台上删除它们时,可能必须将它们添加回来。如果我将它们隐藏在屏幕外,它们可能必须移回屏幕上。这就是为什么我不只是删除Child()所有内容并将对象置空。

3 个答案:

答案 0 :(得分:2)

  

将MovieClip放在舞台上但在观看区域之外   使用大量资源?

无论是在观看区域的内部还是外部,您的MovieClip都会使用相同数量的内存。

  

删除和添加MovieClip会有多少惩罚   舞台招致?

删除/归零很便宜,创建新对象要贵得多。

  

是否估计您正在使用多少个MovieClip   在你应该从一种方法切换到另一种方法之前?

如果您正在处理数百或数千个实例,请查看object pooling

还有一个不错的video tutorial about object pooling。如果您想了解有关销毁/创建显示对象的更多信息,这是值得关注的。

答案 1 :(得分:1)

如果您不打算重复使用动画片段,则应该删除它们。这个动作是无成本的,它可以释放你的动画片段的记忆。有一个隐藏的movieclip使用相同数量的内存,它在显示过程中更容易(你的应用程序不会滞后,但这是一个主要的内存泄漏)。

答案 2 :(得分:1)

如果不使用它们,最好将其删除。如果它是一个移动的项目(例如以5px / s的x速度),即使它离开屏幕,该项目仍在处理中并且移动得越来越远。

基本上,如果它没有被使用并且没有任何用途,那么将其删除以节省资源。