一个游戏对应一个Application对象。Application的职责是管理游戏生命周期并设置默认窗口,获取平台及本地化信息等。各个平台对应的入口,首先初始化一个Application对象。
一个屏幕对应一个Director,一个Application可以创建多个Director。
Driector控制着一个游戏场景中的一切,包括opengl es的初始化、窗口管理、场景管理及切换、游戏循环等。其中场景管理中,Drictor提供2种方法从一个场景切换到另一个场景。一种是使用replaceScene()方法直接替换,这种方法是直接删除并释放之前的场景。如果只是切换到一个临时场景的话,Drictor还提供了一个场景栈来管理这些场景。
Application::run是整个程序的入口,每一帧的开始,cocos2d-x都会先检测外在事件的发生比如,用户输入,触摸,鼠标,重力感应等。然后进行动画计算,物理模拟,物理模拟完成,逻辑更新,逻辑更新完成,UI树遍历,便利完成,绘制,绘制完成,交换缓冲区,自动释放。一帧结束。每帧循环执行。
cocos2d-x中有2种更新机制,都是通过scheduler来实现的,第一种,是与游戏帧率保持一致,通过scheduleUpdate()方法来注册,this->scheduleupdate();直接调用。第二种方法,schedule()方法来注册,里面可以自定义参数。