由于cocos2d-x 2.0.1 的引擎里面改了很多方法明, 比如新建的场景由node改为create等。
下面是我使用最新的引擎写的一个简单的切换场景。
要切换的头文件 里面有继承 CCLayerColor跟CCScene场景类。
下面是头文件GameOver.h
#pragma once #include "cocos2d.h" using namespace cocos2d; class GameOverLayer2 : public cocos2d::CCLayerColor { public: GameOverLayer2(void); ~GameOverLayer2(void); bool init(); void gameOverDone(); LAYER_CREATE_FUNC(GameOverLayer2); CC_SYNTHESIZE_READONLY(CCLabelTTF *,_ttf,Ttf); }; class GameOverScene2 : public cocos2d::CCScene { public: ~GameOverScene2(); bool init(); SCENE_CREATE_FUNC(GameOverScene2); CC_SYNTHESIZE_READONLY(GameOverLayer2 *,_layer,Layer); };下面是GameOver.cpp文件
#include "GameOver.h" #include "HelloWorldScene.h" GameOverLayer2::GameOverLayer2(void) { } GameOverLayer2::~GameOverLayer2(void) { if(_ttf) { _ttf->release(); _ttf = NULL; } } void GameOverLayer2::gameOverDone() { CCDirector::sharedDirector()->replaceScene(HelloWorld::scene()); } bool GameOverLayer2::init() { if (CCLayerColor::initWithColor(cocos2d::ccc4(255,255,255,255))) { CCSize size = CCDirector::sharedDirector()->getWinSize(); this->_ttf = CCLabelTTF::create("","Artial",33); //没有使用retain保留会报堆栈出错 this->_ttf->retain(); this->_ttf->setPosition(ccp(size.width/2,size.height/2)); this->addChild(_ttf); this->runAction(CCSequence::create( CCDelayTime::create(3),CCCallFunc::create(this,callfunc_selector(GameOverLayer2::gameOverDone)),NULL)); return true; } return false; } GameOverScene2::~GameOverScene2() { if(_layer) { _layer->release(); _layer = NULL; } } bool GameOverScene2::init() { if(CCScene::init()) { _layer = GameOverLayer2::create(); _layer->retain(); this->addChild(_layer); return true; } return false; }
this->runAction(CCSequence::create( CCDelayTime::create(3), CCCallFunc::create(this, callfunc_selector(HelloWorld::changeScene)),NULL));
代码如下:
void HelloWorld::changeScene() { //GameOverScene* gameScene = GameOverScene::create(); GameOverScene2* gameScene = GameOverScene2::create(); gameScene->getLayer()->getTtf()->setString("where my love~~"); CCDirector::sharedDirector()->replaceScene(gameScene); }记住要引用头文件。~
这样你会发现场景每3秒切换一次。
~~ ok!