我有一个算法需要几秒钟来加载一些东西,我想首先在标签上设置字符串,在实际加载开始之前说“加载”。这都在同一层内,这不是在场景之间切换。
我以为我可以这样做:
-(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
}
我的理解是我的方法beginLoading
不应该运行到下一帧。因此我的标签应该正确更新。然而,这并没有发生。在我加载所有资产并且加载开始之前我的标签永远不会更新时,会有轻微冻结。
我错过了一步吗?
答案 0 :(得分:0)
没有遗漏任何东西。我停止了这个,现在使用这种“延迟”的任务弹射器。它应该确保你在从第一个到第二个刻度的过渡中得到一个平局:
-(void) startLoading{
_loadTicker=0; // an NSUInteger iVar declared in the .h
[self schedule:@selector(tickOffLoading:)];
}
-(void) tickOffLoading:(ccTime) dt{
_loadTicker++;
if(_loadTicker==1) {
[self.loadingLabel setString:@"Loading...."];
} else {
[self unschedule:@selector(tickOffLoading:)];
[self beginLoading];
}
}