如何正确使用Cocos2d的update / tick方法来触发一次事件?

时间:2013-02-20 18:06:22

标签: methods triggers cocos2d-iphone boolean

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

1 个答案:

答案 0 :(得分: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。