每一款游戏都在一幕幕场景中呈现的,今天来记录一下如何创建自己的场景类,并调用切换效果来切换场景。
1 我们自己的类需要继承Layer类(如果需要用颜色作为背景,则继承LayerColor;或渐变色图层LayerGradient)
2 我们来重写virtual bool init() 方法,首先来调用基类的init方法,接下来为我们自己的场景添加精灵或控件
bool MyLayer::init(){ if (!Layer::init()) { return false; } Sprite *a = Sprite::create("image.png"); Size visibleSize = Director::getInstance()->getVisibleSize(); a->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2)); this->addChild(a); return true; }3 在头文件类的声明中调用CREATE_FUNC宏,为我们添加静态的create方法;或者我们可以自己添加静态的create方法
#ifndef _MY_LAYER_ #define _MY_LAYER_ #include "cocos2d.h" class MyLayer : public cocos2d::Layer { public: virtual bool init(); static cocos2d::Scene * createScene(); CREATE_FUNC(MyLayer); }; #endif // !_MY_LAYER_4 创建一个静态的createScene方法,返回值为Scene指针类,并在该方法中将我们自己的Layer类添加到scene中
Scene * MyLayer::createScene(){ auto s = Scene::create(); auto l = MyLayer::create(); s->addChild(l); return s; }5 到此我们已经完成了我们自己的场景创建类,接下来替换场景,同时我们可以为场景切换添加一些效果
auto s = MyLayer::createScene(); Director::getInstance()->replaceScene(TransitionCrossFade::create(1.0f,s));//添加渐变效果替换场景注:当我们第一次进入场景时需要调用runWithScene方法,而不是replaceScene方法
所有以Transition开头的类均为场景切换的效果类,调用create方法并将,Scene指针传入即可使用,大家可以自己尝试一下。
原文链接:https://www.f2er.com/cocos2dx/345491.html