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

创建场景

时间:2014-06-07 05:06:51      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

今天开始学习Cocos2d-x,使用的版本是2.1.4,这个版本比较老,对应的参考资料也比较齐全。

在mac/xcode环境下,代码是写在Classes文件夹下的,和iOS应用类似,程序从AppDelegate.cpp开始,这当中也有一些生命周期方法,其中有一个

applicationDidFinishLaunching方法:

bubuko.com,布布扣
 1 bool AppDelegate::applicationDidFinishLaunching()
 2 {
 3     // 创建一个导演类
 4     CCDirector *pDirector = CCDirector::sharedDirector();
 5     pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
 6     // 设置是否显示FPS
 7     pDirector->setDisplayStats(true);
 8     //设置帧率
 9     pDirector->setAnimationInterval(1.0 / 60);
10     //创建一个初始场景
11     CCScene *pScene = MainScene::scene();
12     //执行游戏
13     pDirector->runWithScene(pScene);
14     return true;
15 }
bubuko.com,布布扣

这部分代码的意图很容易理解,不多解释了,在项目创建的时候,默认带有一个HelloWorld类,把这个类删掉,我们自己建立一个MainScene场景:

.h文件:

bubuko.com,布布扣
 1 #ifndef __MyGame__MainScene__
 2 #define __MyGame__MainScene__
 3 
 4 #include <iostream>
 5 #include "cocos2d.h"        //导入头文件
 6 using namespace cocos2d;    //使用命名空间
 7 
 8 //场景继承自CCLayer,是一个层的子类
 9 class MainScene : public CCLayer {
10 public:
11     //一个虚函数初始化方法
12     virtual bool init();
13     //一个用于构建场景的静态方法
14     static CCScene *scene();
15     //通过宏,生成一个叫做create的工厂方法
16     CREATE_FUNC(MainScene);
17 };
bubuko.com,布布扣

其中CREATE_FUNC是一个宏,用于创建一个工厂方法,它的实现是:

bubuko.com,布布扣
 1 #define CREATE_FUNC(__TYPE__)  2 static __TYPE__* create()  3 {  4     __TYPE__ *pRet = new __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 }
bubuko.com,布布扣

.m文件:

bubuko.com,布布扣
 1 #include "MainScene.h"
 2 
 3 //一个用于构建场景的静态方法
 4 CCScene *MainScene::scene() {
 5     //首先通过CCScene的工厂方法创建了一个场景
 6     CCScene *scene = CCScene::create();
 7     //调用由宏生成的工厂方法创建了一个层对象
 8     MainScene *layer = MainScene::create();
 9     //将图层添加到场景上
10     scene->addChild(layer);
11     //返回场景
12     return scene;
13 }
14 
15 //在MainScene::create方法当中调用
16 bool MainScene::init() {
17     //首先调用父类的构造方法
18     if (!CCLayer::init()) {
19         return false;
20     }
21     
22     //使用图片创建一个精灵,注意Resource下的文件不需要加路径
23     CCSprite *sprite = CCSprite::create("Icon-72.png");
24     //为场景增加一个精灵
25     this->addChild(sprite);
26     
27     return true;
28 }
bubuko.com,布布扣

这里有一些概念:

一个游戏有多个场景,这些场景之间通过导演来控制切换;一个场景内可以有多个层,每个层上也可以有多个精灵。

这样,一个最基本的游戏画面就创建出来了。

创建场景,布布扣,bubuko.com

创建场景

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/Steak/p/3755943.html

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