日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d-x游戏开发(十五)游戏加载动画loading界面

發(fā)布時間:2024/4/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-x游戏开发(十五)游戏加载动画loading界面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

個人原創(chuàng),歡迎轉(zhuǎn)載:http://blog.csdn.net/dawn_moon/article/details/11478885


這個資源加載的loading界面demo是在玩客網(wǎng)做逆轉(zhuǎn)三國的時候隨手寫的,雖然我在那只待了2個禮拜,但是也算參與了一個商業(yè)游戲項目了,學(xué)到不少東西。當時使用的cocos2d-x還是1.0版的,我用2.1.2的調(diào)試過了。

上圖:


好了,很簡單,代碼有注釋

上代碼:

[cpp]?view plaincopyprint?
  • #include?"HelloWorldScene.h"??
  • #include?"SimpleAudioEngine.h"??
  • ??
  • using?namespace?cocos2d;??
  • using?namespace?CocosDenshion;??
  • ??
  • CCScene*?HelloWorld::scene()??
  • {??
  • ????//?'scene'?is?an?autorelease?object??
  • ????CCScene?*scene?=?CCScene::create();??
  • ??????
  • ????//?'layer'?is?an?autorelease?object??
  • ????HelloWorld?*layer?=?HelloWorld::create();??
  • ??
  • ????//?add?layer?as?a?child?to?scene??
  • ????scene->addChild(layer);??
  • ??
  • ????//?return?the?scene??
  • ????return?scene;??
  • }??
  • ??
  • //?on?"init"?you?need?to?initialize?your?instance??
  • bool?HelloWorld::init()??
  • {??
  • ????//??
  • ????//?1.?super?init?first??
  • ????if?(?!CCLayer::init()?)??
  • ????{??
  • ????????return?false;??
  • ????}??
  • ??????
  • ????m_iLoadIdex?=?0;??
  • ??
  • ????/??
  • ????//?2.?add?a?menu?item?with?"X"?image,?which?is?clicked?to?quit?the?program??
  • ????//????you?may?modify?it.??
  • ??
  • ????//?add?a?"close"?icon?to?exit?the?progress.?it's?an?autorelease?object??
  • ????CCMenuItemImage?*pCloseItem?=?CCMenuItemImage::create(??
  • ????????????????????????????????????????"CloseNormal.png",??
  • ????????????????????????????????????????"CloseSelected.png",??
  • ????????????????????????????????????????this,??
  • ????????????????????????????????????????menu_selector(HelloWorld::menuCloseCallback)?);??
  • ????pCloseItem->setPosition(?ccp(CCDirector::sharedDirector()->getWinSize().width?-?20,?20)?);??
  • ??
  • ????//?create?menu,?it's?an?autorelease?object??
  • ????CCMenu*?pMenu?=?CCMenu::create(pCloseItem,?NULL);??
  • ????pMenu->setPosition(?CCPointZero?);??
  • ????this->addChild(pMenu,?1);??
  • ??
  • ????/??
  • ????//?3.?add?your?codes?below...??
  • ??
  • ????//?add?a?label?shows?"Hello?World"??
  • ????//?create?and?initialize?a?label??
  • ????CCLabelTTF*?pLabel?=?CCLabelTTF::create("Hello?World",?"Thonburi",?34);??
  • ??
  • ????//?ask?director?the?window?size??
  • ????CCSize?size?=?CCDirector::sharedDirector()->getWinSize();??
  • ??
  • ????//?position?the?label?on?the?center?of?the?screen??
  • ????pLabel->setPosition(?ccp(size.width?/?2,?size.height?-?20)?);??
  • ??
  • ????//?add?the?label?as?a?child?to?this?layer??
  • ????this->addChild(pLabel,?1);??
  • ??
  • ????//?add?"HelloWorld"?splash?screen"??
  • ????CCSprite*?pSprite?=?CCSprite::create("HelloWorld.png");??
  • ??
  • ????//?position?the?sprite?on?the?center?of?the?screen??
  • ????pSprite->setPosition(?ccp(size.width/2,?size.height/2)?);??
  • ??
  • ????//?add?the?sprite?as?a?child?to?this?layer??
  • ????this->addChild(pSprite,?0);??
  • ??????
  • ????//?loading邊框??
  • ????m_progressFrame?=?CCSprite::create("loading_fr.png");??
  • ????addChild(m_progressFrame,1);??
  • ????m_progressFrame->setPosition(ccp(240,?50));??
  • ??????
  • ????//?loading的動作條??
  • ????m_progressBar?=?CCProgressTimer::create(CCSprite::create("loading_bar.png"));??
  • ????m_progressBar->setType(kCCProgressTimerTypeBar);??
  • ????addChild(m_progressBar);??
  • ????m_progressBar->setVisible(true);??
  • ????m_progressBar->setPosition(ccp(241,?51));??
  • ????//?進度動畫運動方向,從左到右??
  • ????m_progressBar->setMidpoint(ccp(0,?0));??
  • ????//?寬高變化,這里是寬度變化??
  • ????m_progressBar->setBarChangeRate(ccp(1,?0));??
  • ????m_progressBar->setPercentage(0);??
  • ??????
  • ????//?loading動畫,沒有邏輯處理,實際情況則注釋掉??
  • ????CCProgressTo?*to?=?CCProgressTo::create(10,?100);??
  • ????m_progressBar->runAction(to);??
  • ??????
  • ????//?實際的loading邏輯,可以在這里加入??
  • //????scheduleUpdate();??
  • ????return?true;??
  • }??
  • ??
  • void?HelloWorld::update(float?dt)??
  • {??
  • ??????
  • ????m_iLoadIdex++;??
  • ??????
  • ????if?(m_iLoadIdex?<=?50)?{??
  • ????????loadResource(m_iLoadIdex);??
  • ????????m_progressBar->setPercentage(m_iLoadIdex?*?100.0?/?50);??
  • ????}??
  • ??????
  • ????if?(m_iLoadIdex?>=50)?{??
  • ????????unscheduleUpdate();??
  • ????}??
  • }??
  • ??
  • //?實際的loading邏輯,加載資源可以在這里添加。??
  • //?這里只用了sleep來模擬??
  • void?HelloWorld::loadResource(int?index)??
  • {??
  • ????CCLog("loading?....");??
  • ????switch?(index)?{??
  • ????????case?0:??
  • ????????????break;??
  • ????????default:??
  • ????????????sleep(1.0);??
  • ????????????break;??
  • ????}??
  • }??
  • ??
  • ??
  • void?HelloWorld::menuCloseCallback(CCObject*?pSender)??
  • {??
  • ????CCDirector::sharedDirector()->end();??
  • ??
  • #if?(CC_TARGET_PLATFORM?==?CC_PLATFORM_IOS)??
  • ????exit(0);??
  • #endif??
  • }??

  • 東西太簡單,還需要上傳demo源碼么。要的留言

    總結(jié)

    以上是生活随笔為你收集整理的cocos2d-x游戏开发(十五)游戏加载动画loading界面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。