接上篇
肥羊吃屁
为什么我们要这么啰嗦呢,一笔带过不好吗?因为我们还没到达那个境界,起码我没达到,我觉得你省略了什么就领悟补了什么,现在慢点吧,我还想找到自己的节奏,就像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
这里前面几章会很慢,后面会越来越快。希望对大家有些帮助
给大家推荐一部好看的动画片异邦人:无皇刃谭。
cocos2d-x 模板项目结构分析 3,布布扣,bubuko.com
原文:http://blog.csdn.net/lightupheaven/article/details/21587301