cocos2d-x 模板项目结构分析 3

来源:互联网 发布:点播软件 编辑:程序博客网 时间:2024/05/17 12:24

接上篇

肥羊吃屁

为什么我们要这么啰嗦呢,一笔带过不好吗?因为我们还没到达那个境界,起码我没达到,我觉得你省略了什么就领悟补了什么,现在慢点吧,我还想找到自己的节奏,就像dota里的基本功一样。



1.resource文件夹

存放游戏中的图片、音频和配置等资源文件。可以在其中创建子文件夹。可以默认为游戏运行时的目录。

2.include和source文件夹

放置游戏头文件和源代码文件,项目模板添加了main.h,main.cpp,resource.h,它们是平台相关的程序文件,windows平台才有。

注意:程序入口和资源文件管理在不同平台下不同,但是cocos2d-x模板已经为我们处理好了这些细节,不要更太他们。

3.AppDelegate.h和AppDelegate.cpp文件

Cocos2d-x游戏的通用入口文件,类似于一般Windows工程中主函数所在的文件。IOS中AppDelegate也是程序的入口文件。

AppDelegate.cpp里有自动添加的代码,文件实现了AppDelegate类。AppDelegate控制着游戏的生命周期。

3个重要方法

a----applicationDidFinishLaunching() 应用程序启动后调用。默认的实现中已经包含了游戏启动的必要准备。


CCDerector 引擎控制器。(属性设置不再提,书上有)

CCScene场景。

指派引擎运行这个场景。

我们还要在此处来对我们的游戏进行其他必要的初始化,例如读取游戏设置,初始化随机数列表。

b----applicationDidEnterBackground() 程序进入后台时调用。


接打电话时。暂停音乐和动作。

c----applicationDidEnterForeground()


与applicationDidEnterBG()成对出现,应用程序回到前台时使用。


4.HelloWorldScene.h和HelloWorldScene.cpp

定义了Hello World项目中默认的游戏场景。

cocos2d-x的游戏结构为    场景-------------层--------------精灵。

这两个文件就是场景的实现文件。每个游戏组建都可以添加到另一个组件中,形成层次关系。

HelloWorldScene中定义了一个HelloWorld类,该类继承自CCLayer,因为HelloWorld本身是一个层。


HelloWorld类包含一个静态函数和两个实例方法。


a--------static cocos2d::CCScene* scene()

在层下设置一个创建 场景的静态函数是一个常见的技巧。

static cocos2d::CCScene *scene()除了这种创建方法还可以

CCScene * scene = CCScene::create();

HelloWorld * layer = HelloWorld::create();

scene->addChild(layer);

注意addChild() 可以把一个游戏元素放置到另一个元素之中。(只有把元素放置到其他已经呈现出来的游戏元素中,它才会呈现出来。)


b----------bool init()

初始化HelloWorld类

aa---对父类进行初始化

 CC_BREAK_IF(! CCLayer::init());     宏定义(#define CC_BREAK_IF(cond)            if(cond) break)

 ab---创建菜单栏并添加到层

CCMenuItemImage * pCloseItem = CCMenuItemImage::create("CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback));

pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));

CCMenu * pMenu = CCMenu::create(pCloseItem, NULL);

pMenu->setPosition(CCPointZero);

this->addChile(pMenu, 1);


ac---创建"Hello World"标签并添加到层中

CCLabelTTF * pLabel = CCLabelTTF::create("Hello World", "Arial", 24);

CCSize size = CCDirector::SharedDirector()->getWinSize();

pLabel->setPosition(ccp(size.width/2, size.height-50));

this->addChile(pLabel, 1);


ad---创建显示HelloWorld.png的精灵并添加到层中

CCSprite * pSprite = CCSprite::create("HelloWorld.png");

pSprite->setPosition (ccp(size.width/2, size.height/2));

this->addChiled(pSprite, 0);

return true;

为啥这里我要手敲一遍呢,因为我的编程功底很弱,不知道从哪里入门额,所以多敲吧。哎,菜。

为什么我们要在init方法里初始化类,而不再构造函数中初始化呢。这是cocos2d-x的编程风格的问题。

test工程下有丰富的测试样例。


好了 至此我们的cocos2d-x已经打开了它的大门。

这三章主要的概念,

A:什么是cocos2d-x,基于cocos2d-iphone的多平台二维游戏引擎,注意是二维。为开发者封装了强大的绘图代码,使开发者专注于游戏开发而不是绘图操作。

B:AppDelegate 项目的程序入口文件。提供对程序生命周期的控制事件。

C:游戏元素,任何可以呈现出来的元素,场景,层,精灵

D:CCNode::addChild

这里前面几章会很慢,后面会越来越快。希望对大家有些帮助


给大家推荐一部好看的动画片异邦人:无皇刃谭。

0 1