1

我一直遇到这个问题,我想在计划的更新或刻度方法期间触发一个事件(无效) - 但只触发一次。问题是每次调用 update/tick 时(每一帧)都会触发它。根据调用的方法,这会减慢游戏速度并偶尔崩溃(例如 addChild 已添加)。我之前使用过 BOOL(例如 eventTriggered)来尝试处理这种情况,但我想知道这是否是唯一和/或最好的方法?

4

1 回答 1

1

如果您使用的是 cocos2d 2.0,只需使用:

[self scheduleOnce:@selector(yourMethod:) delay:3.0f];

在所有其他情况下,只需取消调度已调度的选择器:

-(void) yourScheduledMethodThatShouldOnlyRunOnce:(ccTime)delta
{
    [self unschedule:_cmd];

    // do stuff once
}

如果它是自定义方法,您需要有一些触发方法调用的条件,例如:

-(void) update:(ccTime)delta
{
    if (runThisNowButOnlyOnce)
    {
        runThisNowButOnlyOnce = NO;
        [self runThisNowButOnlyOnceMethod];
    }
}

您只需要弄清楚何时何地将 runThisNowButOnlyOnce 设置为 YES。也不要忘记将它作为 ivar 添加到@interface。

于 2013-02-20T19:23:04.463 回答