新建工程,ReplaceScene
新建文件TestLayer.h
//
// TestLayer.h
// ReplaceScene
//
// Created by cloud on 13-4-10.
//
//
#ifndef __ReplaceScene__TestLayer__
#define __ReplaceScene__TestLayer__
#include <cocos2d.h>
class TestLayer:public cocos2d::CCLayer
{
public:
virtual bool init();
static cocos2d::CCScene *scene();
CREATE_FUNC(TestLayer);
virtual void onEnter();
virtual void onEnterTransitionDidFinish();
virtual void onExit();
};
#endif /* defined(__ReplaceScene__TestLayer__) */
新建文件TestLayer.cpp//
// TestLayer.cpp
// ReplaceScene
//
// Created by cloud on 13-4-10.
//
//
#include "TestLayer.h"
using namespace cocos2d;
CCScene *TestLayer::scene()
{
CCScene *scene=CCScene::create();
TestLayer *layer=TestLayer::create();
scene->addChild(layer);
return scene;
}
bool TestLayer::init()
{
if (!CCLayer::init()) {
return false;
}
CCLOG("TestLayer init");
CCSprite *sp=CCSprite::create("background2.png");
sp->setPosition(ccp(240,160));
addChild(sp);
return true;
}
//进入此类中的调用函数
void TestLayer::onEnter()
{
CCLOG("TestLayer onEnter");
CCLayer::onEnter();
}
//切换动画完成后调用的函数
void TestLayer::onEnterTransitionDidFinish()
{
CCLOG("TestLayer onEnterTransitionDidFinish");
CCLayer::onEnterTransitionDidFinish();
}
//退出时候调用的函数
void TestLayer::onExit()
{
CCLOG("TestLayer onExt");
CCLayer::onExit();
}
修改HelloWorldScene.h#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
class HelloWorld : public cocos2d::CCLayer
{
public:
// Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)
virtual bool init();
// there's no 'id' in cpp, so we recommend to return the class instance pointer
static cocos2d::CCScene* scene();
// preprocessor macro for "static create()" constructor ( node() deprecated )
CREATE_FUNC(HelloWorld);
virtual ~HelloWorld();
void changeScene();
//生命周期函数
virtual void onEnter();
virtual void onEnterTransitionDidFinish();
virtual void onExit();
};
#endif // __HELLOWORLD_SCENE_H__
#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
#include "TestLayer.h"
using namespace cocos2d;
using namespace CocosDenshion;
#define ChangeMacro 32
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
CCSprite *sp=CCSprite::create("background1.png");
sp->setPosition(ccp(240, 160));
addChild(sp);
CCLabelTTF *labelTTF=CCLabelTTF::create("点击切换场景", "Helvetica-Hald", 30);
labelTTF->setColor(ccc3(255, 0, 0));
CCMenuItemLabel *LabelItem=CCMenuItemLabel::create(labelTTF, this, menu_selector(HelloWorld::changeScene));
CCMenu* menu=CCMenu::create(LabelItem,NULL);
addChild(menu);
return true;
}
void HelloWorld::changeScene()
{
CCTransitionScene *reScene=NULL;
CCScene *s=TestLayer::scene();
float t=1.2f;
switch (ChangeMacro) {
case 1:
{
//-------------------CCTransitionJumpZoom
reScene=CCTransitionJumpZoom::create(t, s);
}
break;
case 2:
{
//-------------------CCTransitionProgressRadialCCW
reScene=CCTransitionProgressRadialCCW::create(t, s);
}
break;
case 3:
{
//-------------------CCTransitionProgressRadialCW
reScene=CCTransitionProgressRadialCW::create(t, s);
}
break;
case 4:
{
//-------------------CCTransitionProgressHorizontal
reScene=CCTransitionProgressHorizontal::create(t, s);
}
break;
case 5:
{
//-------------------CCTransitionProgressVertical
reScene=CCTransitionProgressVertical::create(t, s);
}
break;
case 6:
{
//-------------------CCTransitionProgressInOut
reScene=CCTransitionProgressInOut::create(t, s);
}
break;
case 7:
{
//-------------------CCTransitionProgressOutIn
reScene=CCTransitionProgressOutIn::create(t, s);
}
break;
case 8:
{
//-------------------CCTransitionCrossFade
reScene=CCTransitionCrossFade::create(t, s);
}
break;
case 9:
{
//-------------------CCTransitionPageTurn
reScene=CCTransitionPageTurn::create(t, s,false);
}
break;
case 10:
{
//-------------------CCTransitionFadeTR
reScene=CCTransitionFadeTR::create(t, s);
}
break;
case 11:
{
//-------------------CCTransitionFadeBL
reScene=CCTransitionFadeBL::create(t, s);
}
break;
case 12:
{
//-------------------CCTransitionFadeUp
reScene=CCTransitionFadeUp::create(t, s);
}
break;
case 13:
{
//-------------------CCTransitionFadeDown
reScene=CCTransitionFadeDown::create(t, s);
}
break;
case 14:
{
//-------------------CCTransitionTurnOffTiles
reScene=CCTransitionTurnOffTiles::create(t, s);
}
break;
case 15:
{
//-------------------CCTransitionSplitRows
reScene=CCTransitionSplitRows::create(t, s);
}
break;
case 16:
{
//-------------------CCTransitionSplitCols
reScene=CCTransitionSplitCols::create(t, s);
}
break;
case 17:
{
//-------------------CCTransitionFade
reScene=CCTransitionFade::create(t, s,ccRED);
}
break;
case 18:
{
//-------------------CCTransitionFlipX
reScene=CCTransitionFlipX::create(t, s,kOrientationLeftOver);
}
break;
case 19:
{
//-------------------CCTransitionFlipY
reScene=CCTransitionFlipY::create(t, s,kOrientationUpOver);
}
break;
case 20:
{
//-------------------CCTransitionFlipAngular
reScene=CCTransitionFlipAngular::create(t, s,kOrientationLeftOver);
}
break;
case 21:
{
//-------------------CCTransitionZoomFlipX
reScene=CCTransitionZoomFlipX::create(t, s,kOrientationLeftOver);
}
break;
case 22:
{
//-------------------CCTransitionZoomFlipY
reScene=CCTransitionZoomFlipY::create(t, s,kOrientationLeftOver);
}
break;
case 23:
{
//-------------------CCTransitionZoomFlipAngular
reScene=CCTransitionZoomFlipAngular::create(t, s,kOrientationLeftOver);
}
break;
case 24:
{
//-------------------CCTransitionShrinkGrow
reScene=CCTransitionShrinkGrow::create(t, s);
}
break;
case 25:
{
//-------------------CCTransitionRotoZoom
reScene=CCTransitionRotoZoom::create(t, s);
}
break;
case 26:
{
//-------------------CCTransitionMoveInL
reScene=CCTransitionMoveInL::create(t, s);
}
break;
case 27:
{
//-------------------CCTransitionMoveInR
reScene=CCTransitionMoveInR::create(t, s);
}
break;
case 28:
{
//-------------------CCTransitionMoveInT
reScene=CCTransitionMoveInT::create(t, s);
}
break;
case 29:
{
//-------------------CCTransitionMoveInB
reScene=CCTransitionMoveInB::create(t, s);
}
break;
case 30:
{
//-------------------CCTransitionSlideInL
reScene=CCTransitionSlideInL::create(t, s);
}
break;
case 31:
{
//-------------------CCTransitionSlideInR
reScene=CCTransitionSlideInR::create(t, s);
}
break;
case 32:
{
//-------------------CCTransitionSlideInT
reScene=CCTransitionSlideInT::create(t, s);
}
break;
case 33:
{
//-------------------CCTransitionSlideInB
reScene=CCTransitionSlideInB::create(t, s);
}
break;
default:
break;
}
CCDirector::sharedDirector()->replaceScene(reScene);
}
//生命周期函数
void HelloWorld::onEnter()
{
CCLOG("HelloWorld onEnter");
CCLayer::onEnter();//务必调用
}
void HelloWorld::onEnterTransitionDidFinish()
{
CCLOG("HelloWorld onEnterTransitionDidFinish");
CCLayer::onEnterTransitionDidFinish();//务必调用
}
void HelloWorld::onExit()
{
CCLOG("HelloWorld onExit");
CCLayer::onExit();//务必调用
}
HelloWorld::~HelloWorld()
{
CCLOG("HelloWorld 析构");
}