简介
游戏里面的代码不是一次跑完的,而是等待一个点击事交互,定时器,或者说一个异步请求触发下一个步骤,一步步的进行变化而来的,但是如果这种变化同时发生,那么每个异步的步骤都有可能互相影响
如游戏等待200ms进入新的关卡,但是如果此时后游戏时间的倒计时结束了,理论上应该去关闭这个等待进入新关卡的定时器,这好像只是冰山一角,如果游戏非常大的时候,如道具的定时器,请求对手进度需要更新进度条(实际游戏已经销毁了)等,我们就更需要一个合理的方法来管理这些异步触发器
组件
白鹭把游戏显示对象定义为了组件,laya和cocos把显示对象的挂件定义为了组件,其实意义都差不多,都是把一些逻辑的事物,规整起来
如游戏中,把GameScene定义为了游戏组件,甚至逻辑上,我们还可以把游戏的消除模块,提示模块,交互模块,抽成一个组件,然后挂到GameScene上
可拆卸
每个组件或多或少对会有一些异步触发器,理论上显示对象不存在了,或者某个组件的功能不需要了,都需要对应的组件需要进行拆卸,通常而言,组件不存在时,不要再有残留的触发器
如世界钟循环播放的龙骨,外部的事件监听,延迟处理的事情,都需要停止
每个组件实现可拆线之后,每个场景才能像电视机选台一样,换一个台,不会突然又无端到另外一个台,每个场景真正实现独立