Cocos2d-x UI開(kāi)發(fā)之場(chǎng)景切換代碼實(shí)例
cocos2d-x中的場(chǎng)景切換是通過(guò)導(dǎo)演類(lèi)調(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)景。剛開(kāi)始程序啟動(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)景切換類(lèi)可以產(chǎn)生特殊的效果,這些類(lèi)有很多,一般有倆個(gè)或者是三個(gè)參數(shù),第一個(gè)參數(shù)是
//時(shí)間,第二個(gè)參數(shù)是要切換到的場(chǎng)景,第三個(gè)參數(shù)根據(jù)類(lèi)的不同各不相同,這個(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類(lèi)需要先設(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);
//采用如下的方法就沒(méi)有特效了
//CCDirector::sharedDirector()->popScene();
}
上一篇:Cocos2d-x學(xué)習(xí)筆記之Hello World源碼分析
欄 目:C語(yǔ)言
下一篇:Cocos2d-x學(xué)習(xí)筆記之Hello World!
本文標(biāo)題:Cocos2d-x UI開(kāi)發(fā)之場(chǎng)景切換代碼實(shí)例
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3402.html
您可能感興趣的文章
- 01-10fatal error LNK1104: 無(wú)法打開(kāi)文件“l(fā)ibc.lib”的解決方法
- 01-10深入探討linux下進(jìn)程的最大線程數(shù)、進(jìn)程最大數(shù)、進(jìn)程打開(kāi)的文
- 01-10DHCP:解析開(kāi)發(fā)板上動(dòng)態(tài)獲取ip的2種實(shí)現(xiàn)方法詳解
- 01-10ubuntu中打開(kāi)終端的三種解決方法
- 01-10C語(yǔ)言文件操作函數(shù)大全(超詳細(xì))
- 01-10基于linux下C開(kāi)發(fā)中的幾點(diǎn)技術(shù)經(jīng)驗(yàn)總結(jié)
- 01-10C++ 創(chuàng)建桌面快捷方式 開(kāi)始菜單的實(shí)現(xiàn)代碼
- 01-10C++函數(shù)重載的深入解析
- 01-10C++ 在堆上開(kāi)辟與釋放二維、三維指針詳細(xì)解析
- 01-10VC++開(kāi)發(fā)中完美解決頭文件相互包含問(wèn)題的方法解析


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改


