Cocos2d-x UI開發(fā)之場景切換代碼實(shí)例
cocos2d-x中的場景切換是通過導(dǎo)演類調(diào)用相應(yīng)的方法完成的,可以通過CCDirector::sharedDirector()->replaceScene()方法切換場景,參數(shù)是要切換的新場景,這種方法會釋放掉舊的場景。通過pushScene()切換則是將舊的場景壓入到棧中,以便通過popScene()函數(shù)出棧,繼續(xù)運(yùn)行原場景。剛開始程序啟動的時(shí)候通過runWithScene()運(yùn)行一個(gè)新的場景。下面通過代碼來說明。單擊下圖可以查看效果。

這次代碼一共建立了倆個(gè)場景,一個(gè)是原來的helloworld場景,一個(gè)是SecondScene場景。具體的看代碼吧。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCLabelTTF * ttf = CCLabelTTF::create("next scene","Arial",32);
//為該場景添加一個(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)場景的切換
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
//使用以下的場景切換類可以產(chǎn)生特殊的效果,這些類有很多,一般有倆個(gè)或者是三個(gè)參數(shù),第一個(gè)參數(shù)是
//時(shí)間,第二個(gè)參數(shù)是要切換到的場景,第三個(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表示向前翻頁,為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-03
C++控制臺實(shí)現(xiàn)隨機(jī)生成路徑迷宮游戲
這篇文章主要為大家詳細(xì)介紹了C++控制臺實(shí)現(xiàn)隨機(jī)生成路徑迷宮游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
C++利用GPAC實(shí)現(xiàn)生成MP4文件的示例代碼
GPAC主要針對學(xué)生和內(nèi)容創(chuàng)作者,代表了一個(gè)跨平臺的多媒體框架,開發(fā)人員可以使用它在?LGPL?許可下制作開源媒體。本文就來用GPAC實(shí)現(xiàn)生成MP4文件,感興趣的可以了解一下2023-02-02
C語言實(shí)現(xiàn)2048游戲(ege圖形庫版)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)2048游戲,ege圖形庫版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Qt實(shí)現(xiàn)繪制網(wǎng)格背景的示例代碼
這篇文章主要介紹了Qt如何實(shí)現(xiàn)繪制網(wǎng)格背景,并且能實(shí)現(xiàn)窗口大小調(diào)整時(shí)網(wǎng)格背景也自動調(diào)整重繪,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06

