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://ybzwz.com/article/dedgce.html