您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細(xì)介紹了制作Cocos2d-x loading加載動(dòng)畫(huà)的方法,文中示例代碼介紹的非常詳細(xì),圖文詳解容易學(xué)習(xí),非常適合初學(xué)者入門(mén),感興趣的小伙伴們可以參考一下。
所謂的進(jìn)度條,其實(shí)不過(guò)是兩張紋理的組合,其中一個(gè)紋理全部顯示出來(lái),而另一個(gè)紋理會(huì)隨著加載的過(guò)程有一定的變化,我們可以為它設(shè)置一個(gè)動(dòng)作,也可以直接設(shè)置它顯示的百分比。
這就是未加載時(shí)和加載完成后的進(jìn)度條顯示,加載完成后,第二個(gè)紋理完全遮住了第一個(gè)紋理,但事實(shí)上他們是兩個(gè)紋理。
先給出實(shí)現(xiàn)代碼。
1. .h文件中聲明全局變量。
CCSprite * loadBkSpr; CCProgressTimer * loadBar; //進(jìn)度條 CCSprite *loadSprite; //加載奔跑蘿莉 |
2. .cpp文件中實(shí)現(xiàn)loading效果。
{
CCSize size = CCDirector::sharedDirector()->getWinSize(); //返回 CCMenuItemImage *back = CCMenuItemImage::create( "backA.png" , "backB.png" , this ,menu_selector(GameMain::menuBackCallback)); if (size.height > 500) { back->setScale(2.0f); } back->setPosition(ccp(size.width - 60,size.height - 60)); back->setEnabled( false ); CCMenu* mainmenu = CCMenu::create(back,NULL); mainmenu->setPosition(ccp(0,0)); this ->addChild(mainmenu,3,4); //加載效果 1.進(jìn)度條 2.奔跑小人 //1.進(jìn)度條 loadBkSpr=CCSprite::create( "loading_1_1.png" ); //加載進(jìn)度條的邊框精靈 loadBkSpr->setPosition(ccp(size.width/2,size.height/2+size.height/4)); loadBkSpr->setScale(3.0f); this ->addChild(loadBkSpr); loadBar=CCProgressTimer::create(CCSprite::create( "loading_1_2.png" )); loadBar->setPercentage(1.0f); //設(shè)置百分比,初始為0 loadBar->setPosition(ccp(size.width/2,size.height/2+size.height/4)); loadBar->setType(kCCProgressTimerTypeBar); //設(shè)置進(jìn)度條為水平類(lèi)型 loadBar->setBarChangeRate(ccp(1,0)); //設(shè)置進(jìn)度條的寬高變化,此處為寬度變化 loadBar->setMidpoint(ccp(0, 0)); //設(shè)置動(dòng)畫(huà)運(yùn)動(dòng)方向從左至右 loadBar->setScale(3.0f); this ->addChild(loadBar); //設(shè)置一個(gè)動(dòng)作,令進(jìn)度條10秒內(nèi)讀取到百分之100 CCProgressTo * action= CCProgressTo::create(4, 100); //加載完畢.移除加載動(dòng)畫(huà),進(jìn)入游戲場(chǎng)景 loadBar->runAction(CCSequence::create(action,CCCallFunc::create( this , callfunc_selector(GameMain::loadSuccess)),NULL)); //2.奔跑小人 loadSprite = CCSprite::create( "s_1.png" ); CCAnimation * animation = CCAnimation::create(); animation->addSpriteFrameWithFileName( "s_1.png" ); animation->addSpriteFrameWithFileName( "s_2.png" ); animation->addSpriteFrameWithFileName( "s_3.png" ); animation->addSpriteFrameWithFileName( "s_4.png" ); animation->addSpriteFrameWithFileName( "s_5.png" ); animation->addSpriteFrameWithFileName( "s_6.png" ); animation->setDelayPerUnit(0.1f); animation->setRestoreOriginalFrame( true ); loadSprite->setPosition(ccp(100, size.height/4)); //運(yùn)行奔跑動(dòng)畫(huà) loadSprite->runAction(CCRepeatForever::create(CCAnimate::create(animation))); CCMoveTo *moveTo = CCMoveTo::create(4, ccp(1000, size.height/4)); loadSprite->runAction(moveTo); this ->addChild(loadSprite); return true ; } //加載完畢.移除加載動(dòng)畫(huà),進(jìn)入游戲場(chǎng)景, void GameMain::loadSuccess() { loadBar->removeFromParent(); loadBkSpr->removeFromParent(); loadSprite->removeFromParent(); } |
我們所展示的進(jìn)度條只不過(guò)是一個(gè)假的進(jìn)度條,因?yàn)樗⒉皇请S著資源加載的百分比而變化的,事實(shí)上我們可以設(shè)置一個(gè)回調(diào)函數(shù),在資源加載的過(guò)程中調(diào)用,并隨著加載進(jìn)度設(shè)置進(jìn)度條的百分比,例如:
CCTextureCache::sharedTextureCache()->addImageAsync("HelloWorld.png”,this,callfuncO_selector(newScene::loadCallBack));
以上就是Cocos2d-x loading加載動(dòng)畫(huà)的詳細(xì)方法,內(nèi)容較為全面,而且我也相信有相當(dāng)?shù)囊恍┲R(shí)點(diǎn)可能是我們?nèi)粘9ぷ骺赡軙?huì)見(jiàn)到或用到的。通過(guò)這篇文章,希望你能收獲更多。
免責(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)容。