提前抱歉新手问题,但三天后我需要帮助。有人能帮助我吗?
我尝试将CCProgressTimer
用于我的课程,我尝试将游戏图片预加载到CCTextureCache
。我试图创建最简单的代码:
NSArray
。但是我的进度条在100%之前没有更新。我将NSLog
跟踪添加到-(void)setPercentage:(float) percentage
,看起来像是:
NSLog(@"percentage %f", percentage);
if(percentage_ != percentage) {
percentage_ = clampf( percentage, 0, 100);
[self updateProgress];
}
我看到添加每张图片的消息:
...
percentage 25
percentage 30
percentage 35
...
但进度条(图片)只有更新才会更新100.我认为[self updateProgress]
应该在setPercentage
的每次调用时更新进度图像。
我的错误在哪里?
答案 0 :(得分:0)
Cocos2D的游戏循环如下:
现在你很可能在某种更新方法中加载纹理。这意味着它看起来像这样:
这意味着在加载所有图像之前不会绘制进度计时器。您可以通过在单独的线程上加载纹理,或者通过允许Cocos2D通过调度间隔为0的选择器来呈现每个更新来解决这个问题,这意味着选择器将每帧运行:
-(id) init
{
…
[self scheduleUpdate:@selector(loadTexture) interval:0];
}
-(void) loadTexture
{
if (no more textures)
{
[self unschedule:_cmd];
}
else
{
// load next texture
// update progresstimer
}
}
您必须向类实例添加必要的变量,最明显的是进度计时器和最后加载的纹理的索引。