您的位置:首页 > 移动开发 > Cocos引擎

零基础学Cocos2d-X 3.0 - 02

2014-04-15 23:47 423 查看
先看看项目的文件布置



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();
}
之前关了的音乐,也可以重写播放啊~~~

哈哈,感觉多热闹啊,不知不觉写成这么生动化啊~~~

不过解析的清楚就算了~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: