我有一个算法需要几秒钟来加载一些东西,我想先在标签上设置字符串以在实际加载开始之前说“加载”。这全部在同一层,这不是在场景之间切换。使用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