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

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

applicationDidFinishLaunching方法:

 bool AppDelegate::applicationDidFinishLaunching()
{
// 创建一个导演类
CCDirector *pDirector = CCDirector::sharedDirector();
pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
// 设置是否显示FPS
pDirector->setDisplayStats(true);
//设置帧率
pDirector->setAnimationInterval(1.0 / );
//创建一个初始场景
CCScene *pScene = MainScene::scene();
//执行游戏
pDirector->runWithScene(pScene);
return true;
}

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

.h文件:

 #ifndef __MyGame__MainScene__
#define __MyGame__MainScene__ #include <iostream>
#include "cocos2d.h" //导入头文件
using namespace cocos2d; //使用命名空间 //场景继承自CCLayer,是一个层的子类
class MainScene : public CCLayer {
public:
//一个虚函数初始化方法
virtual bool init();
//一个用于构建场景的静态方法
static CCScene *scene();
//通过宏,生成一个叫做create的工厂方法
CREATE_FUNC(MainScene);
};

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

 #define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
__TYPE__ *pRet = new __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = NULL; \
return NULL; \
} \
}

.m文件:

 #include "MainScene.h"

 //一个用于构建场景的静态方法
CCScene *MainScene::scene() {
//首先通过CCScene的工厂方法创建了一个场景
CCScene *scene = CCScene::create();
//调用由宏生成的工厂方法创建了一个层对象
MainScene *layer = MainScene::create();
//将图层添加到场景上
scene->addChild(layer);
//返回场景
return scene;
} //在MainScene::create方法当中调用
bool MainScene::init() {
//首先调用父类的构造方法
if (!CCLayer::init()) {
return false;
} //使用图片创建一个精灵,注意Resource下的文件不需要加路径
CCSprite *sprite = CCSprite::create("Icon-72.png");
//为场景增加一个精灵
this->addChild(sprite); return true;
}

这里有一些概念:

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

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

cocos2d-x创建场景的更多相关文章

  1. cocos2d之创建自己的场景类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 1. 首先创建.h的头文件,然后在将一些图片声音素材加到resource文件夹内,最后在创建.cpp文件:         .h头文件中创 ...

  2. 搭建LoadRunner中的场景(一) 创建场景

    一.创建场景 1. 使用场景创建设置对话框 场景分类: 1. 人工场景:相比面向目标场景,人工场景在实际工作中的应用更为广泛. 2. 面向目标场景:预先定义了一个测试目标,LoadRunner将根据这 ...

  3. 【three.js 第一课】创建场景,显示几何体

    <!DOCTYPE html> <html> <head> <title>demo1</title> </head> <s ...

  4. Cocos2dx 3.1.1 学习笔记整理(2):创建场景与载入图片

    把之前用2.2.3的代码迁移到3.1.1真是个蛋疼的工作,话说3.1.1做的改动还真是大啊. 可以在HelloWorldScene.cpp中看到,之前的各种CCXXX都被废弃了. 例如,新建一个CCL ...

  5. cocos2d JS 创建实现换行功能的聊天文本 testLable

    -- 创建实现换行功能的文本 function LoadLabelHeroIntroduce(objLabelContent)  //传入文本 ---------------------------- ...

  6. cocos2d 导演,场景

    导演(Director) Cocos2d-x 使用导演的概念,这个导演和电影制作过程中的导演一样!导演控制电影制作流程,指导团队完成各项任务.在使用 Cocos2d-x 开发游戏的过程中,你可以认为自 ...

  7. 【Cocos2d-X游戏实战开发】捕鱼达人之游戏场景的创建(六)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)    博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...

  8. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

  9. 【淡墨Unity3D Shader计划】一间 创建一个游戏场景 &amp; 第一Shader写作

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

随机推荐

  1. Mining 影响数据挖掘结果的 5 方面

    第一个: 数据类型. 对象的不同属性会用不同的数据类型来描述,如  年龄-->int; 生日 -->date;数据挖掘时也要对不同的类型有不同的对待. 第二个: 数据质量. 数据质量直接影 ...

  2. Linux: service network/Network/NetworkManager

    Linux:service network/Network/NetworkManager start 这三种有什么不同? 1.network service的制御网络接口配置信息改动后,网络服务必须从 ...

  3. android从网络获取图片

    http://blog.csdn.net/wangjinyu501/article/details/8219317 http://www.cnblogs.com/JerryWang1991/archi ...

  4. WPF按钮清空自带样式,以及透明按钮时,Grid的Background属性设置引起"点击"问题.

    1.空样式按钮 <Style x:Key="EmptyButtonStyle" TargetType="Button">            &l ...

  5. TCP/IP Checksum 吐槽

    算法原理: 假定 output[2] 为输出结果,input[n]为待计算校验和的内存块. 1)所有奇数位[0,2,4……] byte 累加进 结果的奇数位内存 output[0],如果溢出,则进位给 ...

  6. 第一个使用Writer写的博客

    今天开通的博客园的博客账户,先来尝试一下用哪种方式最适合写博. 目前用Live Writer. 以后计划在这里分享数据技术的技术体会和学习心得,尤其是大数据和数据仓库相关的知识.Hello my bl ...

  7. 普林斯顿大学算法课 Algorithm Part I Week 3 自我总结

    要熟练掌握比较器Comparator public final Comparator<T> MY_COMPARATOR = new myComparator(); //定义比较器 .... ...

  8. POJ 1753 Flip Game (DFS + 枚举)

    题目:http://poj.org/problem?id=1753 这个题在開始接触的训练计划的时候做过,当时用的是DFS遍历,其机制就是把每一个棋子翻一遍.然后顺利的过了.所以也就没有深究. 省赛前 ...

  9. spoj 8222 Substrings (后缀自动机)

    spoj 8222 Substrings 题意:给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值.求F(1)..F(Length(S)) 解题思路:我们构造S的SAM,那么对于 ...

  10. leetCode 31.Next Permutation (下一个字典序排序) 解题思路和方法

    Next Permutation  Implement next permutation, which rearranges numbers into the lexicographically ne ...