coco2d-x实现Loading界面预加载资源-创新互联

首先我们定义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里面对象物体的标签 。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:coco2d-x实现Loading界面预加载资源-创新互联
网站地址:http://hbruida.cn/article/dedgce.html