-1

我做了一个小 Flash 游戏,现在我正在转换东西。

第一帧我在其中放置了一个默认的影片剪辑和一个按钮。单击该按钮会添加一个包含正在运行的游戏的所有部分的链接影片剪辑,然后将其自身删除。所以现在开始屏幕不见了。

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

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

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

[其中大部分我使用包含所有“根”影片剪辑来具有该前缀。]

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

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

谢谢。

4

1 回答 1

0

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

从舞台上移除一个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 清理:我是否正确执行 AS3 参考清理?

于 2013-02-27T08:47:09.503 回答