我在游戏开始的时候通过
Director::getInstance()->getTextureCache()->addImageAsync(“Roomlist_backBtn.png”, CC_CALLBACK_1(GameLoadingLayer::loadingCallback, this));
Director::getInstance()->getTextureCache()->addImageAsync(“room_back.png”, CC_CALLBACK_1(GameLoadingLayer::loadingCallback, this));
Director::getInstance()->getTextureCache()->addImageAsync(“bg.png”, CC_CALLBACK_1(GameLoadingLayer::loadingCallback, this));
Director::getInstance()->getTextureCache()->addImageAsync(“girl.png”, CC_CALLBACK_1(GameLoadingLayer::loadingCallback, this));
Director::getInstance()->getTextureCache()->addImageAsync(“playBg.png”, CC_CALLBACK_1(GameLoadingLayer::loadingCallback, this));
.
.
.
…
加载50个图片,
没加载一张进入loadingCallback 通过setPercentage更新进度条, 当进度条的值为最大值(50)的时候,则replaceScene…
场景切换以后, 貌似进度条又执行了一次更新的操作, 各位路过的大大求解一下为何会这样。这个问题有时候出现,有时候不出现。 在Iphone5S上的时候基本没出现过。
顺便问一下,通过addImageAsync加载的图片在程序退出以后会释放掉吗? 因为有时候发现加载界面刚打开的时候进度条就已经满格了。
先在这里谢谢大家了。~~
异常截图:
主要代码:
loadProgress = ProgressTimer::create(Sprite::create(“loading_progress.png”));//创建一个进程条
loadProgress->setBarChangeRate(Point(1,0));//设置进程条的变化速率
loadProgress->setType(ProgressTimer::Type::BAR);//设置进程条的类型
loadProgress->setMidpoint(Point(0,1));//设置进度的运动方向
loadProgress->setPosition(Point(visibleSize.width /2,visibleSize.height * .25));
loadProgress->setPercentage(0.0f);//设置初始值为0
this->addChild(loadProgress,1);
loadingCallback函数:
++m_loadedSp;//每进到这个函数一次,让m_loadedSp + 1
float newPercent = 100 - ((float)m_numSp - (float)m_loadedSp)/((float)m_numSp/100);//计算进度条当前的百分比
loadProgress->setPercentage(newPercent);//更新进度条
//图片加载完成后
if(m_loadedSp == m_numSp)
{
Director::getInstance()->replaceScene( HelloWorld::createScene());
}