我正在制作一个游戏,每个级别都包含在一个精灵中。当我退出关卡时,精灵会从舞台上移除并设置为空。问题是精灵内部的所有变量和事件侦听器都保持不变。有比找到并禁用所有游戏机制更简单的解决方案吗?
1 回答
我有一个非常相似的方法。我不知道它是否对你有用,但这或多或少是我所做的。老实说,你的问题有点含糊,但我会仔细研究一下。
(对于任何可能的评论员,是的,我的时间轴上有代码,我知道很多人认为这是“不好的做法”。相信我,替代方案对我的项目不可行。但是,从技术上讲,人们可以做类似的事情我想我正在使用文档类。):
--
我也将每个“关卡”(实际上,对我来说,每个探索位置)都放在一个单独的 MovieClip 中。显然,每个 MovieClip 都有自己的代码。但是,变量和事件侦听器在“startClip()”函数中进行初始化。然后,清理任务(例如删除事件侦听器和变量)在“stopClip()”函数中完成。
这些关卡通过创建 MovieClip,然后在 MovieClip 上调用 startClip() 放置在舞台上。当我想切换到另一个级别时,我调用 stopClip(),然后删除 MovieClip。
这种方法的另一个优点是我可以在舞台上为通用 GUI 元素添加一个额外的 MovieClip,因此当我切换“级别”时,通用 GUI 不会受到影响。
我确信还有其他方法可以完成同样的事情,但这就是我所做的,它对我有用。
另一个提示:如果您将大部分(如果不是全部)常见任务放在舞台上、文档类中,如果必要的话,放在一两个自定义类中,您将减少需要删除的变量和事件侦听器. 我实际上有许多自定义类,因此,每个 MovieClip 中大约 90% 的代码只是调用这些类中的函数和变量。
对我来说,这些自定义类控制(除其他外)评分、声音播放、随机化任务、常见数组任务和保存玩家进度。
希望这可以帮助!