这里我们第一次加入一个Loadding界面。创建一个LoadScene.h文件和一个LoadScene.cpp文件。这里我不写其他代码,此篇只为展示一个场景类的基本配置。请看代码。
代码如下:
LoadScene.h
/** * Loadding场景的声明 */ #ifndef __LOAD_SCENE_H__ #define __LOAD_SCENE_H__ #include "cocos2d.h" USING_NS_CC; /** * 定义一个LoadLayer类继承自Layer类 */ class LoadLayer : public Layer { public: /** * 构造函数 */ LoadLayer(); /** * 析构函数 */ virtual ~LoadLayer(); /** * 创建当前场景并加入LoadLayer层 */ static cocos2d::Scene* createScene(); /** * 初始化LoadLayer层 */ virtual bool init(); /** * 创建LoadLayer层 */ CREATE_FUNC(LoadLayer); private: /** * 示例变量 */ int demoTag; }; #endif
LoadScene.cpp
/** * Loadding场景的实现 */ #include "LoadScene.h" /** * 构造函数,一般用来初始化变量 */ LoadLayer::LoadLayer():demoTag(0){} /** * 析构函数,一般用来释放内存 */ LoadLayer::~LoadLayer(){} /** * 创建场景,加入LoadLayer层 */ Scene* LoadLayer::createScene() { Scene* scene = Scene::create(); LoadLayer *layer = LoadLayer::create(); scene->addChild(layer); return scene; } /** * 初始化 LoadLayer */ bool LoadLayer::init() { if (!Layer::init()) { return false; } return true; }
以上的代码我本人并未在里面添加其他的层和精灵什么的。这里只是介绍一个场景类最原始的配置。下面分析下:
第一,在C++中已经说明了构造函数的存在
主要用于在类的对象创建时定义初始化的状态。很多码农喜欢在构造函数里面去做一般我们在init函数里面做的事情。从某种程度上来说这种编码习惯并不好。一般的,我们习惯于在构造函数里面只对类的对象或者变量进行初始化。
第二,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; \ } \ }
第三,请明确当前场景中分清createScene()函数和CREATE_FUNC()的作用,这两个做的事情完全不同,前者是创建场景并把后者加进去,后者是是cocos2dx的定义的一个创建宏,可以创建任何一个node,参数就是里面要创建的node,当前是创建一个层(这里是LoadLayer层),并对其初始化。
第四,layer的init()函数的调用在CREATE_FUNC()里面。一个好的习惯是在层的初始化函数init()里面进行场景的设计而不是构造函数里面。
而这些代码其实在创建项目的时候,项目自带的已经说明的很清楚,作为一个游戏程序员,一个好的编程习惯是很重要的。OK,此篇就到这里。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。