雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

Cocos2d-x UI開(kāi)發(fā)之場(chǎng)景切換代碼實(shí)例

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

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

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有