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