0

我有一个算法需要几秒钟来加载一些东西,我想在实际加载开始之前先将标签上的字符串设置为“正在加载”。这都是在同一层内,这不是场景之间的切换。

我以为我可以简单地这样做:

-(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不应该运行到下一帧。因此我的标签应该得到正确更新。然而,这并没有发生。当我的所有资产都被加载并且我的标签在加载开始之前永远不会更新时,会有轻微的冻结。

我错过了一步吗?

4

1 回答 1

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];
    }
}
于 2012-06-01T16:35:31.847 回答