0

我正在开发一个在 Actionscript 3 中编码的 Flash 程序,我正在尝试确定是否应该在电影剪辑不在屏幕上时将其从舞台上移除,或者在它们离开观看区域后停止移动它们。如果我在 MovieClip 移出观看区域后不 removeChild(),我可能最终会在舞台上看到数以万计的 MovieClip(尽管不在视图中)。

是否有标准建议在不可见时隐藏与删除 MovieClip?

基本上,我试图找出:

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

谢谢!

--EDIT-- 在我的程序中,MovieClips 经常不得不重新出现在屏幕上。这意味着当我将它们从舞台上移除时,它们可能必须重新添加。如果我将它们隐藏在屏幕外,则可能必须将它们移回屏幕上。这就是为什么我不只是 removeChild() 一切并将对象归零。

4

3 回答 3

2

将 MovieClips 放在舞台上但在观看区域之外是否会占用大量资源?

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

在舞台上移除和添加 MovieClip 会产生多少罚款?

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

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

如果您正在处理成百上千的实例,请查看对象池

还有一个很好的关于对象池的视频教程。如果您想了解有关销毁/创建显示对象的更多信息,值得一看。

于 2013-07-01T16:49:51.923 回答
1

如果您不打算重复使用这些影片剪辑,则绝对应该删除它们。该动作是无成本的,它释放了您的电影剪辑的内存。隐藏的影片剪辑使用相同数量的内存,只是在显示过程中更容易(您的应用程序不会滞后,但这是一个主要的内存泄漏)。

于 2013-07-01T16:24:36.817 回答
1

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

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

于 2013-07-01T16:25:18.397 回答