我做了一个小小的Flash游戏,现在我正在改变一切。
第一帧我有一个默认的动画片段和一个按钮。单击该按钮可添加一个链接的动画片段,其中包含功能游戏的所有部分,并自行删除。所以现在开始屏幕消失了。
该部分有效,游戏仍然像以前一样功能。
现在,至少尝试了50种不同的东西,我无法让它做我想做的事。
当你输掉游戏时,我想删除包含功能游戏的动画片段,并添加一个新的孩子,赢或输电影剪辑。
[大部分内容我使用containsAll“root”movieclip来获得该前缀。]
至少,它似乎删除了游戏动画片段,前面的输赢显示,但游戏动画片段依然“活跃”,听众仍在运行游戏内容。任何人都知道我能做什么?或者,真的,比这更好的设计。如果需要代码我可以粘贴,现在它很麻烦,尝试绝对一切。
感谢。
答案 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?