您好,登錄后才能下訂單哦!
在游戲開發(fā)中,我們通常需要做一個(gè)游戲的進(jìn)度條來過渡游戲的場(chǎng)景切換或者顯示游戲資源的加載進(jìn)度。
同樣的來說,進(jìn)度條可以在角色扮演游戲中作為玩家或者怪物頭頂?shù)纳鼦l,或者消除類休閑游戲的倒計(jì)時(shí)等。進(jìn)度條多種多樣,如何合理的使用根據(jù)游戲的項(xiàng)目需求而定。
在cocos2dx中,進(jìn)度條使用 ProgressTimer 來實(shí)現(xiàn),首先要定義精靈綁定進(jìn)度條。
打開我們創(chuàng)建的項(xiàng)目cocosxuexi,直接改寫init()初始化里的代碼來實(shí)現(xiàn),先把以前寫的代碼注釋掉。
1、首先在HelloWorldScene.h文件里定義2個(gè)指針。
public:
virtualvoid update(float dt);//默認(rèn)調(diào)度器
private:
ProgressTimer* progress1;//定義進(jìn)度條指針
LabelTTF* numsTTF;//定義標(biāo)簽指針
2、在HelloWorldScene.cpp里init()方法里創(chuàng)建一個(gè)進(jìn)度條和一個(gè)進(jìn)度條的邊框
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//創(chuàng)建一個(gè)進(jìn)度條精靈邊框
auto progressbgSprite=Sprite::create("loadKuang.png");
progressbgSprite->setPosition(Vec2(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2));
this->addChild(progressbgSprite, 1);
//創(chuàng)建一個(gè)進(jìn)度條精靈
auto progressSprite=Sprite::create("loadBar.png");
progress1=ProgressTimer::create(progressSprite);
progress1->setType(kCCProgressTimerTypeBar);
progress1->setPosition(Vec2(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2));
//進(jìn)度動(dòng)畫運(yùn)動(dòng)方向,可以多試幾個(gè)值,看看效果
progress1->setMidpoint(Vec2(0, 0));
//進(jìn)度條寬高變化
progress1->setBarChangeRate(Vec2(1, 0));
progress1->setPercentage(0); //設(shè)置進(jìn)度條百分比為0%
this->addChild(progress1, 1);
numsTTF=CCLabelTTF::create("0", "Thonburi", 18);
numsTTF->setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2);
this->addChild(numsTTF, 1);
scheduleUpdate(); //默認(rèn)調(diào)度器,調(diào)用update()方法
3、在HelloWordScene.cpp里實(shí)現(xiàn)update()方法
voidHelloWorld::update(floatdt)
{
float cu=progress1->getPercentage(); //獲取百分比
cu=cu+1.0f; //進(jìn)度條進(jìn)度 每次加1%
progress1->setPercentage(cu);
if (cu <= 100) //如果進(jìn)度小于等于100%
{
auto str1 = String::createWithFormat("%.2f%%",cu);
numsTTF->setString(str1->getCString()); //設(shè)置標(biāo)簽顯示內(nèi)容
}
//如果進(jìn)度條達(dá)到100%,則停止
else
{
unscheduleUpdate();//停止默認(rèn)調(diào)度器
}
}
到此一個(gè)可用的進(jìn)度條就已經(jīng)實(shí)現(xiàn)了。如果用來實(shí)現(xiàn)場(chǎng)景自動(dòng)切換,直接在update()里停止調(diào)度器后就實(shí)現(xiàn)自動(dòng)切換操作。
效果預(yù)覽:
Cocos2dx學(xué)習(xí)筆記12:cocos2dx進(jìn)度條(ProgressTimer)
http://www.byjth.com/biji/32.html
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。