码迷,mamicode.com
首页 > 其他好文 > 详细

Cocos2Dx 场景的创建

时间:2015-11-10 07:04:08      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

新建的cocos2Dx工程默认的是一个helloworld工程,里面包含了2个类文件,一个是AppDelegate,一个是HelloworldScene类文件(这个类叫HellowWorld,为什么类文件和类名不一样这一点让我觉得挺不爽的。)在AppDelegate内主要进行“导演“的初始化,设置显示信息和窗口大小等等。还有一个主要功能就是初始化和显示第一个场景。

auto scene = HelloWorld::createScene();//调用hello world类的方法创建场景
director->runWithScene(scene);//运行场景,该方法只在第一次加载场景时调用

下面来看HelloWorld类,了解场景的初始化过程对于了解程序的运行过程会有帮助。

 1 class HelloWorld : public cocos2d::Layer
 2 {
 3 public:
 4     static cocos2d::Scene* createScene();
 5 
 6     virtual bool init();
 7     
 8     // a selector callback
 9     void menuCloseCallback(cocos2d::Ref* pSender);
10     
11     // implement the "static create()" method manually
12     CREATE_FUNC(HelloWorld);
13 };
 1 Scene* HelloWorld::createScene() // cpp文件中的createScene方法实现
 2 {
 3     // ‘scene‘ is an autorelease object
 4     auto scene = Scene::create();
 5     
 6     // ‘layer‘ is an autorelease object
 7     auto layer = HelloWorld::create();
 8 
 9     // add layer as a child to scene
10     scene->addChild(layer);
11 
12     // return the scene
13     return scene;
14 }

在AppDelegate中使用createScene方法,在该方法中使用Scene::create创建一个新场景,然后再用HelloWorld类中的create方法创建helloWorld层(注意,HelloWrold继承的是Layer,所以实际上它是一个层)。CREATE_FUNC是一个预定义的宏,用来创建对象,函数定义如下:

 1 #define CREATE_FUNC(__TYPE__)  2 static __TYPE__* create()  3 {  4     __TYPE__ *pRet = new(std::nothrow) __TYPE__();  5     if (pRet && pRet->init())  6     {  7         pRet->autorelease();  8         return pRet;  9     } 10     else 11     { 12         delete pRet; 13         pRet = NULL; 14         return NULL; 15     } 16 }

可以看到在该函数中创建了一个调用它的类对象,并且使用该类的init方法初始化,并返回一个指针。创建完成后使用addchild加入刚刚创建的场景中,第一个场景就完成啦。

Cocos2Dx 场景的创建

标签:

原文地址:http://www.cnblogs.com/yang-xiong/p/4951778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!