在cocos2d-x 中场景之前的切换,有许多的特效。替换场景,则使用
CCDirector::sharedDirector()->replaceScene(CCTransitionJumpZoom::create(3, s));。CCTransitionJumpZoom跳跃式,本场景先会缩小,然后跳跃进来,3表示3秒钟跳入到下一场景。
在这里面本人新建了俩个场景,HelloWorldScene.h里面代码
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "MyGameLayer.h"
#include "cocos2d.h"
#include "SimpleAudioEngine.h"
class HelloWorld : public cocos2d::CCLayer
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommand to return the exactly class pointer
static cocos2d::CCScene* scene();
void updateGeme(float dt);
// implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
};
#endif
HelloWorldScene.cpp里面的代码
#include "HelloWorldScene.h"
using namespace cocos2d;
CCScene* HelloWorld::scene()
{
CCScene * scene = NULL;
do
{
// 'scene' is an autorelease object
scene = CCScene::create();
CC_BREAK_IF(! scene);
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
CC_BREAK_IF(! layer);
// add layer as a child to scene
scene->addChild(layer);
} while (0);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCSprite *pSprite = CCSprite::create("9.png");
CCSize size = CCDirector::sharedDirector()->getWinSize();
pSprite->setPosition(ccp(size.width/2,size.height/2));
addChild(pSprite);
this->schedule(schedule_selector(HelloWorld::updateGeme),3);
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::updateGeme(float dt){
CCLog("goNextScene");
CCScene *s = MyGameLayer::scene();
CCDirector::sharedDirector()->replaceScene(CCTransitionJumpZoom::create(3, s));
}
MyGame.h里面的代码
#ifndef __MYGAME_SCENE_H__
#define __MYGAME_SCENE_H__
#include "cocos2d.h"
//使用cocos2d命名空间
USING_NS_CC;
class MyGame : public cocos2d::CCLayer
{
public:
MyGame(void);
virtual ~MyGame(void);
static cocos2d::CCScene* scene();
/*void updateGame(float dt); */
virtual bool init();
CREATE_FUNC(MyGame);
};
#endif
MyGame.cpp代码
#include "MyGame.h"
using namespace cocos2d;
MyGame::MyGame(void)
{
}
MyGame::~MyGame(void)
{
}
//创建场景
cocos2d::CCScene* MyGame::scene(){
CCScene *scene = NULL;
do{
scene = CCScene::create();
CC_BREAK_IF(!scene);
MyGame *myLayer = MyGame::create();//需要定义CREATE_FUNC(MyGameLayer)宏
CC_BREAK_IF(!myLayer);
scene->addChild(myLayer);
}while(0);
return scene;
}
bool MyGame::init(){
bool ret =false;
do{
CC_BREAK_IF(!CCLayer::init());
CCSprite *s1 = CCSprite::create("11.png");
s1->setPosition(ccp(240,160));
this->addChild(s1,0);
ret = true;
}while(0);
return ret;
}
下面是一些场景之间的切换的特效