我有一個算法需要幾秒鐘來加載一些東西,我想先在標籤上設置字符串以在實際加載開始之前說「加載」。這全部在同一層,這不是在場景之間切換。使用Cocos2D scheduleUpdate來延遲加載
我想我可以簡單地這樣做:
-(void)startLoading{
[self unscheduleAllSelectors];//just in case the update is already scheduled
[self.loadingLabel setString:@"Loading...."];
[self scheduleUpdate];
}
然後,我有這樣的:
-(void)update:(ccTime)delta{
[self unscheduleUpdate];
[self beginLoading];//another method that loads all the stuff
}
我的理解是,我的方法不應該運行到下一幀。因此我的標籤應該正確更新。但是,這沒有發生。當我的所有資產都被加載並且我的標籤在加載開始之前永遠不會更新的時候,會有輕微的凍結。
我錯過了一個步驟嗎?
你是從場景/圖層中的init函數調用startLoading嗎?此線程似乎有一個解決方案... http://www.cocos2d-iphone.org/forum/topic/15998 – badgerr
該線程指的是一個不同的問題。我的更新正在運行,但它並未等待一幀,或者如果是這樣,先前的幀在新幀開始之前沒有完成,而我認爲這是不可能的。我不是從init方法調用。 – johnbakers