链接的电影剪辑完全删除并替换,如何设置它

时间:2013-02-27 04:43:00

标签: flash replace linked-list

我做了一个小小的Flash游戏,现在我正在改变一切。

第一帧我有一个默认的动画片段和一个按钮。单击该按钮可添加一个链接的动画片段,其中包含功能游戏的所有部分,并自行删除。所以现在开始屏幕消失了。

该部分有效,游戏仍然像以前一样功能。

现在,至少尝试了50种不同的东西,我无法让它做我想做的事。

当你输掉游戏时,我想删除包含功能游戏的动画片段,并添加一个新的孩子,赢或输电影剪辑。

[大部分内容我使用containsAll“root”movieclip来获得该前缀。]

至少,它似乎删除了游戏动画片段,前面的输赢显示,但游戏动画片段依然“活跃”,听众仍在运行游戏内容。

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

感谢。

1 个答案:

答案 0 :(得分:0)

  

至少,它似乎删除了游戏动画片段,输赢   显示在前面,但游戏动画片段仍然是“活跃”的   听众仍在运行gameLoop。

从舞台中删除MovieClip或任何对象(或者,就此而言,将对象设置为null)将不会清除其事件侦听器,这些侦听器将继续运行并将阻止来自垃圾收集的对象,您的游戏最终可能会出现内存泄漏

当您从舞台上移除对象(游戏MovieClip)时,您应该做的是调用'cleanUp'功能,您应该在其中:

  • 删除所有事件监听器

    //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?