2011-11-27 61 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