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

這次代碼一共建立了倆個場景,一個是原來的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ù)實現(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類需要先設置攝像機
CCDirector::sharedDirector()->setDepthTest(true);
//第三個參數(shù)為false表示向前翻頁,為true表示向后翻頁
CCTransitionPageTurn * pageTurn = CCTransitionPageTurn::create(2.0,HelloWorld::scene(),false);
CCDirector::sharedDirector()->replaceScene(pageTurn);
//采用如下的方法就沒有特效了
//CCDirector::sharedDirector()->popScene();
}
相關文章
C++如何通過ostringstream實現(xiàn)任意類型轉string
再使用整型轉string的時候感覺有點棘手,因為itoa不是標準C里面的,而且即便是有itoa,其他類型轉string不是很方便。后來去網(wǎng)上找了一下,發(fā)現(xiàn)有一個好方法2013-09-09
在Visual Studio Code中配置C++編譯環(huán)境的問題
關于Visual Studio Code對C++環(huán)境的配置方法應該有好多種,我這里用到了其中的兩種,具體內容詳情文中給大家詳細介紹,對Visual Studio Code配置C++編譯環(huán)境相關知識感興趣的朋友一起看看吧2021-07-07
C++實現(xiàn)LeetCode(67.二進制數(shù)相加)
這篇文章主要介紹了C++實現(xiàn)LeetCode(67.二進制數(shù)相加),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-07-07

