2012-06-05 81 views
1

我有以下代碼:CCProgressTimer不更新,然後突然跳到

CCProgressTimer *aTimer; 


-(void) generateDungeon { 

    srand (time(NULL)); 
    [self initDungeonArray]; 

    int numRooms = RNDM(10,100); 
    for (int a=0; a< numRooms; a++) { 
     [self makeRandomRoom]; 
     aTimer.percentage += 100/numRooms; 
    } 

[self connectTheRooms]; 
[self placeStairs]; 
} 

的問題是,在循環過程中計時器沒有更新在屏幕上,然後突然(循環結束後,我認爲)填滿將近滿。我不明白爲什麼會發生這種情況。我認爲,當你改變百分比時,圖像會更新。

任何人都可以幫我理解我應該理解什麼嗎?

謝謝。

回答

0

你的圖像(在這種情況下,你的進度計時器),在draw()和visit()方法的屏幕上更新。他們被稱爲每個勾號。在這裏,您可以在一個時間內改變它的值。因此,在上一次繪圖期間,計時器值爲0%,在下一個繪圖中,它的值爲100

您在單線程中創建它。所以你的計時器在這種情況下不會更新。要創建可更新的計時器,您可以嘗試將長工作代碼移至單獨的線程。那麼你將能夠更新計時器。

+0

該序列需要幾秒鐘才能執行。沒有足夠的時間更新計時器嗎? – user1437403

+0

更新了我的文章 – Morion

+0

我還可以從我的循環調用訪問嗎? – user1437403