本人纯菜鸟,C++略知一二 JAVA什么的都不懂 。博文自是自己对coco的理解。如有错误请帮忙指正 不胜感激!
之前没有接触过COCOS2DX 2.X版本
直接学习的是3.0beta2版本。
每个平台的入口点都不一样。但是进入程序后,首先执行的是
AppDelegate 类的applicationDidFinishLaunching()函数
AppDelgate类继承自cocos2d::Application
class AppDelegate : private cocos2d::Application
采用private继承方式主要是隐藏一些不必要的接口防止Director 类错误使用。当然我们也可以自定义一个类替代AppDelegate。不过没有必要除非装装B什么的。
在这个函数内执行对导演类(Director)和视窗类(eglView)的初始化.
这两个类都是单例对象。
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director 初始化导演雷 和视窗类,因为这两个类都是单例。构造函数不是公开的。
auto director = Director::getInstance();
auto eglView = EGLView::getInstance();
//将导演和视窗关联以便显示
director->setOpenGLView(eglView);
// turn on display FPS 显示FPS值 默认是关的!
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this 设置FPS值默认为1.0/60
director->setAnimationInterval(1.0 / 60);
// create a scene. it's an autorelease object。建立一个场景该场景具体在其他文件定义
auto scene = HelloWorld::createScene();
// run 导演选择这个场景进行显示。
director->runWithScene(scene);
return true;
//这代码里使用了C++ 11 auto关键字 自动推导类型。 关于为什么返回true我也不太明白。反正helloworld的例子就是这样。
}
从这行代码可以理解到:首先要初始化导演和视窗。然后建立一个场景 让导演显示这个场景。 接着程序的运行流程进入运行场景的逻辑。直到程序结束