您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x-3.0rc1 学习笔记3(场景切换)

2014-04-11 20:46 471 查看
要想场景切换,就必须要先建立一个新的场景,或直接切换原场景,可以再菜单按钮的回调函数上实现

helloworld.h 中添加

class MyScene:public cocos2d::Scene
{
public:
MyScene();
public:
virtual void onEnter();
virtual void runThisTest();
void NextSceneCallback(Ref* pSender);
void LastSceneCallback(Ref* pSender);
};
class LayerPanda:public cocos2d::Layer
{
public:
LayerPanda();
~LayerPanda();
public:
virtual void onEnter();
};
class LayerRabbit:public cocos2d::Layer
{
public:
LayerRabbit();
~LayerRabbit();
public:
virtual void onEnter();
};


helloworld.cpp 中添加

LayerPanda::LayerPanda()
{
auto size = Director::sharedDirector()->getWinSize();
auto pSpritepanda =  Sprite::create("panda.png");

pSpritepanda->setPosition(ccp(size.width/2,size.height/2));
addChild(pSpritepanda);
}
void LayerPanda::onEnter()
{
CCLayer::onEnter();
}

LayerRabbit::LayerRabbit ()
{

auto size =Director::sharedDirector()->getWinSize();
Sprite* pSpriteRabbit =  Sprite::create("rabbit.png");
pSpriteRabbit->setPosition(ccp(size.width/2,size.height/2));
this->addChild(pSpriteRabbit);
}
LayerPanda::~LayerPanda()
{
}
LayerRabbit ::~LayerRabbit ()
{
}
void LayerRabbit ::onEnter()
{
CCLayer::onEnter();
}

MyScene::MyScene()
{
Scene::init();
MenuItemFont* item1 = MenuItemFont::create( "Next", this, menu_selector(MyScene::NextSceneCallback) );
MenuItemFont* item2 = MenuItemFont::create( "Last", this, menu_selector(MyScene::LastSceneCallback) );
auto s= Director::getInstance()->getVisibleSize();
Menu* menu = Menu::create( item1, item2, NULL );
item1->setPosition(s.width/3,s.height/3);
item2->setPosition(s.width/3,s.height/3+30);
menu->setPosition(CCPointZero);
addChild( menu,1 );
}
void MyScene::NextSceneCallback(Ref *pSender)
{
Scene* scene =new MyScene();
Layer* pLayer = new LayerRabbit();
scene->addChild(pLayer, 0);
Director::sharedDirector()->pushScene(scene);
scene->release();
pLayer->release();
}
void MyScene::LastSceneCallback(Ref* pSender)
{
Scene* scene =new MyScene();
Layer* pLayer = new LayerPanda();
scene->addChild(pLayer, 0);
Director::sharedDirector()->pushScene(scene);
scene->release();
pLayer->release();
}
void MyScene::onEnter()
{
Scene::onEnter();
}
void MyScene::runThisTest()
{
Layer* pLayer = new LayerPanda();
addChild(pLayer);
pLayer->release();
Director::sharedDirector()->replaceScene(this);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: