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