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

来源:互联网 发布:淘宝秒杀作弊器 编辑:程序博客网 时间:2024/06/04 17:41


    要想场景切换,就必须要先建立一个新的场景,或直接切换原场景,可以再菜单按钮的回调函数上实现

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); } 


0 0
原创粉丝点击