【问题标题】:Is it better to hide or remove MovieClips that aren't on the screen?隐藏或删除不在屏幕上的影片剪辑更好吗?
【发布时间】:2013-07-01 16:19:51
【问题描述】:

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

是否有标准建议在不可见的情况下隐藏与删除影片剪辑?

基本上,我正在尝试找出:

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

谢谢!

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

【问题讨论】:

  • 接受所有建议,不要犹豫,因为最佳路线取决于您的情况。您可能会考虑使对象不可见,而不是删除它们或移出屏幕。关于这个主题有很多资源,这个类似/重复的SO question 可能会有所帮助。
  • 你可以简单地使用mc.visible = false

标签: actionscript-3 flash actionscript


【解决方案1】:

在舞台上但在观看区域之外是否有 MovieClip 使用大量资源?

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

在其中删除和添加 MovieClip 会受到多少处罚 舞台发生了什么?

删除/清空很便宜,创建新对象的成本要高得多。

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

如果您要处理成百上千个实例,请查看object pooling

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

【讨论】:

  • 加上我的一个对象池建议。听起来这可能正是 OP 正在寻找的。​​span>
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 2011-07-13
      • 1970-01-01
      相关资源
      最近更新 更多