2013-02-27 22 views
-1

我做了一个小闪光游戏,现在我正在切换东西。链接的电影剪辑完全删除并替换,如何设置

第一帧我有一个默认的movieclip放在它和一个按钮。点击按钮添加一个链接的动画片段,其中包含正常运行的游戏的所有部分,并将其自身删除。所以现在开始屏幕消失了。

这部分工作,游戏仍然像以前一样功能。

现在,尝试从字面上至少有50个不同的事情,我不能让它做我想做的事情。

当你失去游戏时,我想删除包含功能游戏的动画片段,并添加一个新的孩子,赢或输movieclip。

[大部分我用containAll“根”影片剪辑有前缀]

它,至少,似乎删除游戏影片剪辑,赢/输显示器正面,但游戏movieclip仍然“活跃”,听众仍在运行gameLoop。

任何人都知道我能做什么?或者,确实比这更好的设计。如果需要的代码我可以粘贴,现在尝试绝对一切都很麻烦。

谢谢。

+0

这实在是很难说什么是你想问。你能否更清楚地写下你的问题。 – jitendra 2013-02-27 05:03:37

回答

0

它,至少,似乎删除游戏影片剪辑,赢/输正面 显示,但游戏影片剪辑仍然是“积极”的 听众仍在运行的gameLoop。

从舞台删除MovieClip或任何物体(或者,对于这个问题,设置对象null)不会清理它的事件监听器,这将继续运行,并阻止该对象被垃圾收集和你的游戏可能最终有内存泄漏

你应该做的是,当你删除对象从舞台(游戏MovieClip),援引了“清理”功能,你应该:

  • 删除所有事件监听器

    //for example, let's say that earilier in your code 
    //you add an enter frame listener: 
    this.addEventListener(Event.ENTER_FRAME, onEnterFrame); 
    
    //on your clean up function you should do: 
    this.removeEventListener(Event.ENTER_FRAME, onEnterFrame); 
    

确保删除其所有孩子的事件侦听器!

  • 停止所有计时器(并删除他们的听众)

这是为进一步参考一个很大的问题/答案在AS3清理:Am I doing AS3 reference cleanup correctly?

+0

谢谢,丹尼,那正是问题所在,现在已修好,所有的错误都消失了。我想知道的一件事是,我有动画“损坏”数字。我不跟踪他们,他们有一个事件监听器,并在完成时删除监听器和它自己。我没有跟踪他们,所以当游戏结束并且他们仍然在屏幕上时,是否有同时摆脱他们? – 2013-02-27 17:23:33

+0

我想你有两个选择,要么“跟踪他们”,通过存储对全局变量中的对象的引用,以及何时完成从舞台中删除他们(通过做objToRemove.parent.removeChild(objToRemove)或(我更喜欢这个方法)将它们放在另一个MovieClip的“内部”,您可以参考它们,并在完成时将它们移除,例如将它们设置为实际游戏屏幕的子项。 – danii 2013-03-01 09:59:41