移动开发利器Coco2d-x-html5中Director的秘密
2023-11-13 11:50:54
了解Director之后,你就能全面了解Coco2d-x-html5的机制了。
Coco2d-x-html5中Director解析
上一讲我们讲了为什么调用了cc.game.run后,会执行cc.game.onStart函数。这一讲,我们通过分析一下CCDirector.js来了解为什么调用了cc.game.run就会开始运行我们的游戏。
Director对象概述
cc.Director对象是一个单例,负责管理游戏场景和事件分发。它在引擎中扮演着重要的角色,是游戏运行的核心。Director对象提供了很多有用的方法来控制游戏场景的切换、事件分发等操作。
Director对象的初始化
在CCDirector.js中,Director对象的初始化工作是在其构造函数中完成的。在构造函数中,Director对象首先会创建一个新的cc.Scheduler对象,然后调用cc.Scheduler对象的update()方法来更新游戏场景。接着,Director对象会创建一个新的cc.ActionManager对象,然后调用cc.ActionManager对象的update()方法来更新游戏场景中的所有动作。最后,Director对象会创建一个新的cc.EventManager对象,然后调用cc.EventManager对象的update()方法来更新游戏场景中的所有事件。
Director对象的运行
当我们调用cc.game.run()方法时,其实就是调用了Director对象的run()方法。在run()方法中,Director对象首先会调用cc.Scheduler对象的start()方法来启动游戏场景的更新。然后,Director对象会调用cc.ActionManager对象的start()方法来启动游戏场景中所有动作的更新。最后,Director对象会调用cc.EventManager对象的start()方法来启动游戏场景中所有事件的更新。
Director对象的停止
当我们调用cc.game.end()方法时,其实就是调用了Director对象的end()方法。在end()方法中,Director对象首先会调用cc.Scheduler对象的stop()方法来停止游戏场景的更新。然后,Director对象会调用cc.ActionManager对象的stop()方法来停止游戏场景中所有动作的更新。最后,Director对象会调用cc.EventManager对象的stop()方法来停止游戏场景中所有事件的更新。
总结
通过对CCDirector.js的分析,我们了解到了Director对象的初始化、运行和停止过程。Director对象在游戏引擎中扮演着重要的角色,是游戏运行的核心。了解了Director对象之后,我们就能更好地理解Coco2d-x-html5的机制。