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