2011-11-27 60 views
1

对不起,新手问题,但三天后,我需要帮助。有人能帮助我吗?Cocos2d CCProgressTimer图像未绘制。为什么?

我尝试使用CCProgressTimer作为我的课,我尝试将游戏的图像预加载到CCTextureCache。我试图创建最简单的代码:

  • 创建NSArray与图像'pathes。
  • 添加该数组中的每个图像并同时更新进度栏。

但我的进度条没有更新之前成为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

的Cocos2D的游戏循环的工作方式如下:

  1. 更新

  • 重复现在你很可能载入纹理某种更新方法。这意味着它看起来是这样的:

    • 负荷纹理1
    • 更新百分比
    • 负荷质地2
    • 更新百分比
    • 负载质感3
    • 更新百分比
    • 负荷最后质感
    • 更新百分比至100%
    • 绘制进度计时器

    这意味着进度计时器不会在所有图像加载完成之后才绘制。

    -(id) init 
    { 
        … 
        [self scheduleUpdate:@selector(loadTexture) interval:0]; 
    } 
    
    -(void) loadTexture 
    { 
        if (no more textures) 
        { 
        [self unschedule:_cmd]; 
        } 
        else 
        { 
        // load next texture 
        // update progresstimer 
        } 
    } 
    

    你将有:可以,或者通过允许的Cocos2D通过与间隔0,这意味着选择器将运行每帧调度选择器渲染每个更新通过任一加载上一个单独的线程纹理解决这个将必要的变量添加到您的类实例中,最显着的是进度计时器和加载的最后一个纹理的索引。

  • +0

    谢谢Steffen! – alexg