加载资源进度条
在很多游戏中,控制图片的载入和释放,可以使我们的游戏更加流畅,我们使用如下的方法载入图片并且回调load函数,在屏幕上显示载入进度
CCTextureCache::sharedTextureCache()->addImageAsync("Images/HelloWorld.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
///////////////////////////
有时候场景中的资源加载过多的话就会引起游戏进入的时候很卡,因为那是边加载边显示。在tests例子里面有一个很好的例子叫做TextureCacheTest,里面讲解了如何写loading。
- #include "LoadingScene.h"
- #include "HelloWorldScene.h"
- bool LoadingScene::init()
- {
- totalNum=9; //记录总的加载数量
- haveLoadedNum=0; //记录已加载的数量
- this->loading();
- return true;
- }
- CCScene *LoadingScene::scene()
- {
- CCScene *scene=CCScene::create();
- LoadingScene *layer=LoadingScene::create();
- scene->addChild(layer);
- return scene;
- }
- void LoadingScene::loading()
- {
- CCSize size=CCDirector::sharedDirector()->getWinSize();
- ttf=CCLabelTTF::create("%0", "Arial", 12); //显示加载进度
- CCLabelTTF *havettf=CCLabelTTF::create("Loading", "Arial", 12);
- this->addChild(ttf,1);
- this->addChild(havettf,1);
- ttf->setPosition(ccp(size.width/3, size.height/2));
- havettf->setPosition(ccp(size.width/2, size.height/2));
- CCTextureCache::sharedTextureCache()->addImageAsync("youlost.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("youwin.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("cat.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("catBody1.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("catBody2-4.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("catBody3.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("catHand1.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("catHand2.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- CCTextureCache::sharedTextureCache()->addImageAsync("catTail.png", this, callfuncO_selector(LoadingScene::loadedCallBack));
- }
- void LoadingScene::loadedCallBack()
- {
- haveLoadedNum++;
- this->runAction(CCDelayTime::create(15));
- char tmp[10];
- sprintf(tmp, "%%%d",(int)((float)haveLoadedNum/totalNum*100));
- ttf->setString(tmp); //更改加载进度
- if (haveLoadedNum==9)
- {
- this->removeChild(ttf, true); //加载完成后,移除加载进度显示
- CCScene *newscne=HelloWorld::scene();
- CCDirector::sharedDirector()->replaceScene(newscne); //场景切换
- }
- }
- bool HelloWorld::init()
- {
- if ( !CCLayer::init() )
- {
- return false;
- }
- CCSprite *sp=CCSprite::createWithTexture(CCTextureCache::sharedTextureCache()->textureForKey("youlost.png"));
- addChild(sp,1);
- }
浙公网安备 33010602011771号