Cocos2dx 3.0 ProgressTimer的问题

我在游戏开始的时候通过

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());
}

场景切换以后, 貌似进度条又执行了一次更新的操作。我觉得这个和你的逻辑写得有关系,如果你得m_loadedSp刚开始就是1,那么最后其实加载到49张就会切换场景,最后一张的加载因为是异步也回调用回调函数一次。只是猜测,仅供参考。
顺便问一下,通过addImageAsync加载的图片在程序退出以后会释放掉吗?程序都退出了,图片会不释放吗?刚开始就满格,说明加载的比较快吧。

— Begin quote from ____

引用第1楼小塔于2014-08-04 10:59发表的 回 楼主(cyber_qx) 的帖子 :
场景切换以后, 貌似进度条又执行了一次更新的操作。我觉得这个和你的逻辑写得有关系,如果你得m_loadedSp刚开始就是1,那么最后其实加载到49张就会切换场景,最后一张的加载因为是异步也回调用回调函数一次。只是猜测,仅供参考。
顺便问一下,通过addImageAsync加载的图片在程序退出以后会释放掉吗?程序都退出了,图片会不释放吗?刚开始就满格,说明加载的比较快吧。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=218610&pid=1020557

— End quote

感谢您的解答。 我仔细的看了一下,设置m_loadedSp = 0;
切换还是出现一样的问题。 还有一种情况。在加载过程中我点了取消按钮, 返回到登陆场景,会出现一样的问题。