先看看项目的文件布置
1. 是 cocos2d-X 引擎库以及拓展库,源码都在那里,可以进入看看实现
2. 是 Cocos2d-X 引擎入口,说白了就是我们主要编码的地方,文件命名仿 iOS
3. 是 框架哦~~~
4. 是 iOS 版项目运行的主入口,iOS 开发人员将可以看到熟悉的文件命名
5. 是 Mac 版项目运行的主入口
6. 是产品存放目录
7. 是资源文件,如图片
作为Cocos2d-X 的初学者,我只想知道自己怎么可以有能力进行使用 Cocos2d-X 引擎编程,其他细节暂时不需要理解,不需要知道如果从iOS 加载引擎等等。
所以目光投放在编码的那个地方,那里一共有4个文件,类似iOS 编程那样有 AppDelegate,ViewController。
AppDelegate.h 在声明一些方法,对 C++ 不熟悉的应该好好学习 C++, 包括我自己~~~
AppDelegate.cpp 看到这个图的代码,对于iOS 开发者来说多熟悉啊
当整个项目启动后,会调用 AppDelegate 类中的 applicationDidFinishLaunching 函数。在此之前,经历了什么,暂时没有必要知道。
当应用程序被切换到运行后台的时候,会调用 AppDelegate 类中的 applicationDidEnterBackground 函数。
而当应用程序从运行后台切换回来的时候,相对的会调用 AppDelegate 类中的 applicationWillEnterForeground 函数。
这三个函数都是很重要的,对于开发者来说,必须知道的。
接下来,我们看看里面写了什么内容吧。
回想一下,(假设你有iOS 开发经验)想想在 applicationDidFinishLaunching 函数里面,一般会进行哪些操作。
对的,我们一般会初始化 window 和 ViewController,然后为window 指定一个 rootViewController 对象。
而在 Cocos2d-X 中,我们必须 一个导演(Director 类)以及导演需要的表演舞台(GLView 类),还有就是要表演的哪场戏(Scene 类)。
初始化导演,导演只有一个。
auto director = Director::getInstance();
或者写成Director *director = Director::getInstance();
初始化表演舞台,表演舞台也有一个哦。
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("My Game");
director->setOpenGLView(glview);
}
或者写成
GLView *glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("My Game");
director->setOpenGLView(glview);
}
首先,要问下导演有没有表演舞台,如果导演说nil 之类表示没有,则我们就要为导演创建一个舞台,之后将这个舞台交给导演管理。
导演可以设置这个舞台很多信息,比如是否显示 FPS,设置这个舞台表演时每个动作的帧数(要你快速就快速,慢速就慢速)。
director->setDisplayStats(true);
director->setAnimationInterval(1.0 /60);
好了,导演、舞台都有了,该是时候初始化要演出哪场戏了。
auto scene = HelloWorld::createScene();
或者写成Scene *scene = HelloWorld::createScene();
恩,一切准备好了。
导演说要马上上演这场戏了。
director->runWithScene(scene);
上戏了~~~~~~
当舞台的银幕被拉下来的时候,导演就会让大家停止一切动作,休息一下吧。
void AppDelegate::applicationDidEnterBackground() {
Director::getInstance()->stopAnimation();
// if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
如果播放了音乐的话,也可以暂停休息啊~~~
而当舞台的银幕被拉起来的时候,导演就会大家开始动作,继续演戏了,开始工作咯。
void AppDelegate::applicationWillEnterForeground() {
Director::getInstance()->startAnimation();
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
之前关了的音乐,也可以重写播放啊~~~
哈哈,感觉多热闹啊,不知不觉写成这么生动化啊~~~
不过解析的清楚就算了~~~~