本帖首发于自己新建的论坛网站:计算机专业学习网,www.hua2buxie.cn。有很多不懂,写的也不好,望大家见谅!欢迎大家去我的网站发帖留言或者发教程。
背景:
前段时间才开始学习cocos2d-x,搭建环境那些就不说了,朋友们在网上找下,我用的环境是cocox2d-x 3.x的。
创建自己的场景
新建场景,首先就得包括2个文件,其中一个.cpp还有一个.h头文件。我将名字命名为CMyScene类,对应的文件为MyScene.h和MyScene.cpp。在新建的CMyScene类中最基本包含了3个成员函数,分别是createScene();和bool init();和CREATE_FUNC(CMyScene);其中重点说的是CREATE_FUNC(CMyScene);这是一个宏。定义自己场景类的时候必须要这个。现在将完成后的.h代码贴出来:
#ifndef __MYSCENE_H__//判断是否重复包含头文件
#define __MYSCENE_H__
#include "cocos2d.h"//需要包含cocos2d-x头文件
class CMyScene:public cocos2d::Layer//场景类派生于Layer层类
{
public:
static cocos2d::Scene*createScene();
virtual bool init();
CMyScene();//空构造函数
~CMyScene();//空析构函数
CREATE_FUNC(CMyScene);//这个很重要,这个是宏定义的,每个必须有、
};
#endif
然后需要在.cpp文件中实现:
#include "MyScene.h"
USING_NS_CC;
Scene* CMyScene::createScene()
{
auto scene = Scene::create();
auto layer = CMyScene::create();
scene->addChild(layer);
return scene;
}
bool CMyScene::init()
{
if (!Layer::init())
{
return false;
}
}
CMyScene::CMyScene()
{
}
CMyScene::~CMyScene()
{
}
上面这个CMyScene类就是自己定义的场景类。但是在启动的时候还不行,假如我们想在启动的时候转到这个场景类得在AppDelegate.cpp中的applicationDidFinishLaunching()函数中加这样一句:auto scene = CMyScene::createScene();
director->runWithScene(scene); // run这个就是利用导演类进行启动我们所需要的场景。假设是切换场景的时候就是用replacescene();
如果我但是这个场景所产生的就是一个黑框框场景。因为我们还没有添加任何东西。下次教大家如何往场景里面添加精灵等等。
这是附的图,这是最初的helloworld场景
这是我们创建的场景,只不过没有添加任何东西。