您好,登錄后才能下訂單哦!
首先我們定義2個c++文件,一個是loadingScene.h, loadingScene.cpp
首先我們在.h里面我們定義我們的辦法
#include"cocos2d.h"
using namespace cocos2d;
class loadingScene:public Layer
{
public:
int nuberOfLoadedRes;//記錄當前的進度
CREATE_FUNC(loadingScene);
bool init();
static Scene *createScene();
void loadingResource();//加載資源
void loadingCallBack(Texture2D*obj);//加載資源的回調
void update(float t);
};
定義好了.H,然后我們去實現這些方法
在.CPP里面。因為我的資源是從cocostudio里面制作的
所以我們這里就實現怎么把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);
//先設置進度條
Node *nodeScene=this->getChildByTag(1000);//場景根節點
comRender *render=(comRender*)(nodeScene->getChildByTag(10003))->getComponent("GUIComponent"));
Widget *widget=(cocos2d::ui::Widget*)(render->getNode());//得到UI層的根節點
loading *progressBar=(loadingBar*)(widget->getChildByTag(7));
progressBar->setPercent(0);
下面我們需要去實現在.H里面的加載資源的方法 ,然后我們在init()方法里面實現一下
//實現資源的加載
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));
}
//加載資源的回調
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);//場景的根節點
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==(有多少資源))
{
這里就寫你下載資源之后是跳轉場景呢還是干什么
}
}
忘記了告訴大家,上面那些Tag里面的數字,要是代碼里面沒有setTag的,那些Tag都cocostudio里面對象物體的標簽 。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。