Cocos2d-x UI開發(fā)之場(chǎng)景切換代碼實(shí)例
cocos2d-x中的場(chǎng)景切換是通過(guò)導(dǎo)演類調(diào)用相應(yīng)的方法完成的,可以通過(guò)CCDirector::sharedDirector()->replaceScene()方法切換場(chǎng)景,參數(shù)是要切換的新場(chǎng)景,這種方法會(huì)釋放掉舊的場(chǎng)景。通過(guò)pushScene()切換則是將舊的場(chǎng)景壓入到棧中,以便通過(guò)popScene()函數(shù)出棧,繼續(xù)運(yùn)行原場(chǎng)景。剛開始程序啟動(dòng)的時(shí)候通過(guò)runWithScene()運(yùn)行一個(gè)新的場(chǎng)景。下面通過(guò)代碼來(lái)說(shuō)明。單擊下圖可以查看效果。
這次代碼一共建立了倆個(gè)場(chǎng)景,一個(gè)是原來(lái)的helloworld場(chǎng)景,一個(gè)是SecondScene場(chǎng)景。具體的看代碼吧。
bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); CCLabelTTF * ttf = CCLabelTTF::create("next scene","Arial",32); //為該場(chǎng)景添加一個(gè)label菜單 CCMenuItemLabel * labelMenu = CCMenuItemLabel::create(ttf,this,menu_selector(HelloWorld::menuCloseCallback)); CCMenu * menu = CCMenu::create(labelMenu,NULL); this->addChild(menu); bRet = true; } while (0); return bRet; } //該函數(shù)實(shí)現(xiàn)場(chǎng)景的切換 void HelloWorld::menuCloseCallback(CCObject* pSender) { //使用以下的場(chǎng)景切換類可以產(chǎn)生特殊的效果,這些類有很多,一般有倆個(gè)或者是三個(gè)參數(shù),第一個(gè)參數(shù)是 //時(shí)間,第二個(gè)參數(shù)是要切換到的場(chǎng)景,第三個(gè)參數(shù)根據(jù)類的不同各不相同,這個(gè)淡入淡出的效果第三個(gè)參數(shù)是顏色 CCTransitionFade * fade = CCTransitionFade::create(2.0,SecondScene::scene(),ccc3(255,100,100)); CCDirector::sharedDirector()->replaceScene(fade); //也可以采用如下的方法 //CCDirector::sharedDirector()->pushScene(fade); }
以下是SecondScene.cpp
#include "SecondScene.h" #include "HelloWorldScene.h" CCScene * SecondScene::scene() { CCScene * scene = NULL; do { scene = CCScene::create(); CC_BREAK_IF(!scene); SecondScene * layer = SecondScene::create(); CC_BREAK_IF(!layer); scene->addChild(layer); } while(0); return scene; } bool SecondScene::init() { bool bRet = false; do { CC_BREAK_IF(!CCLayer::init()); CCLabelTTF * ttf = CCLabelTTF::create("first scene","Arial",32); CCMenuItemLabel * labelMenu = CCMenuItemLabel::create(ttf,this,menu_selector(SecondScene::changeScene)); CCMenu * menu = CCMenu::create(labelMenu,NULL); this->addChild(menu); bRet = true; } while(0); return bRet; } void SecondScene::changeScene(CCObject * sender) { //使用CCTransitionPageTurn類需要先設(shè)置攝像機(jī) CCDirector::sharedDirector()->setDepthTest(true); //第三個(gè)參數(shù)為false表示向前翻頁(yè),為true表示向后翻頁(yè) CCTransitionPageTurn * pageTurn = CCTransitionPageTurn::create(2.0,HelloWorld::scene(),false); CCDirector::sharedDirector()->replaceScene(pageTurn); //采用如下的方法就沒有特效了 //CCDirector::sharedDirector()->popScene(); }
相關(guān)文章
Qt+Quick實(shí)現(xiàn)播放音樂(lè)和視頻的開發(fā)
這篇文章主要為大家詳細(xì)介紹了如何利用Qt+Quick實(shí)現(xiàn)播放音樂(lè)和視頻的開發(fā),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03C++控制臺(tái)實(shí)現(xiàn)隨機(jī)生成路徑迷宮游戲
這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)實(shí)現(xiàn)隨機(jī)生成路徑迷宮游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05C++利用GPAC實(shí)現(xiàn)生成MP4文件的示例代碼
GPAC主要針對(duì)學(xué)生和內(nèi)容創(chuàng)作者,代表了一個(gè)跨平臺(tái)的多媒體框架,開發(fā)人員可以使用它在?LGPL?許可下制作開源媒體。本文就來(lái)用GPAC實(shí)現(xiàn)生成MP4文件,感興趣的可以了解一下2023-02-02C語(yǔ)言實(shí)現(xiàn)2048游戲(ege圖形庫(kù)版)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)2048游戲,ege圖形庫(kù)版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Qt實(shí)現(xiàn)繪制網(wǎng)格背景的示例代碼
這篇文章主要介紹了Qt如何實(shí)現(xiàn)繪制網(wǎng)格背景,并且能實(shí)現(xiàn)窗口大小調(diào)整時(shí)網(wǎng)格背景也自動(dòng)調(diào)整重繪,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06圖文詳解C語(yǔ)言位運(yùn)算基礎(chǔ)知識(shí)
這篇文章主要以圖文結(jié)合的方式為大家詳細(xì)介紹了C語(yǔ)言位運(yùn)算基礎(chǔ)知識(shí),感興趣的小伙伴們可以參考一下2016-07-07