溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

coco2d-x實現(xiàn)Loading界面預(yù)加載資源

發(fā)布時間:2020-06-17 09:45:21 來源:網(wǎng)絡(luò) 閱讀:604 作者:酷酷小喬 欄目:開發(fā)技術(shù)

首先我們定義2個c++文件,一個是loadingScene.h, loadingScene.cpp

首先我們在.h里面我們定義我們的辦法

#include"cocos2d.h"

using namespace cocos2d;

class loadingScene:public Layer

{

public:

int nuberOfLoadedRes;//記錄當(dāng)前的進度

CREATE_FUNC(loadingScene);

bool init();

static Scene *createScene();

void loadingResource();//加載資源

void loadingCallBack(Texture2D*obj);//加載資源的回調(diào)

void update(float t);

};

定義好了.H,然后我們?nèi)崿F(xiàn)這些方法

在.CPP里面。因為我的資源是從cocostudio里面制作的

所以我們這里就實現(xiàn)怎么把cocostudio制作的東西拿到cocos2d里怎么來用他

#include"loadingScene.h

#include"cocostudio/cocostudio.h"

#include"SimpleAudioEngie.h"  //這里是定義聲音的頭文件

using namespace CocosDenshion //這里是定義聲音的頭文件

using namespace cocostudio;

Scene *loadingScene::createScene()

{

   auto scene=Scene::create();

   auto layer=loadingScene::create();

   scene->addChild(layer);

   return scene; 

}


bool loadingScene::init()

{

if(!Layer::init())

{

return false;

}

//顯示場景編輯器做好的場景

auto node=SceneReader::getInstance()->createNodeWithSceneFile("

publish/LoadingScene.json //要加載場景

")

node->setTag(1000);

this->addChild(node);

//先設(shè)置進度條

Node *nodeScene=this->getChildByTag(1000);//場景根節(jié)點

comRender *render=(comRender*)(nodeScene->getChildByTag(10003))->getComponent("GUIComponent"));

Widget *widget=(cocos2d::ui::Widget*)(render->getNode());//得到UI層的根節(jié)點

loading *progressBar=(loadingBar*)(widget->getChildByTag(7));

progressBar->setPercent(0);

下面我們需要去實現(xiàn)在.H里面的加載資源的方法 ,然后我們在init()方法里面實現(xiàn)一下

//實現(xiàn)資源的加載

this->numberOfLoadedRes=0;//先初始化我們要加載的資源為0

loadingScene::LoadingResource();

this->scheduleUpdate();

return true;


}

void  LoadingScene::LoadingResource()

{

 SimpleAudioEngine::getInstance()->preloadBackgroundMusic(FileUtils::getInstance->

fullPathForFilenmae("需要加入的游戲音樂的名字".c_str());

numberOfLoadedRes++;

//加載所有的圖片幀

spriteFrameCache::getInstance()->addSpriteFramesWithFile("加入plist文件");

numberOfLoadedRes++;

//  紋理緩存--所有的圖片都可以放到紋理緩存中

Director::getInstance()->getTextureCache()->addImageAsync("需要加入的圖片",

CC_CALLBACK_1(loadingScene::loadingCallBack,this));

}

//加載資源的回調(diào)

void loadingScene::LoadingCallBack(Texture2D * obj)

{

numberOfLoadedRes++

這里我們用log打出我們加載的資源有沒有成功

log("資源加載:%d",numberOfLoadedRes);


}

這里我們更新下我們的進度條

void loadingScene::update(float t)

{

float percent=(float)numberOfLoadedRes/(有多少資源)*100;

Node *nodeScene=this->getChildByTag(1000);//場景的根節(jié)點

ComRender * render=(ComRender*)(nodeScene->getChildByTag(10003)->

               getComponent("GUIComponent"));

Widget *widget=(cocos2d::ui::Widget*)(render->getNode());

loadingBar *progressBar=(LoadingBar*)(widget->getChildByTag(7));

progressBar->setPercent(percent);

if(numberOfLoadedRes==(有多少資源))

{

  這里就寫你下載資源之后是跳轉(zhuǎn)場景呢還是干什么

}

}

忘記了告訴大家,上面那些Tag里面的數(shù)字,要是代碼里面沒有setTag的,那些Tag都cocostudio里面對象物體的標(biāo)簽 。









向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI