1

我正在对精灵执行 runAction 以移动到某个位置。

[[crBalls[cb.count] getball] runAction:[CCSequence actions:[CCMoveTo actionWithDuration:timeToTravel position:ccp(xIntercept,yIntercept)],[CCMoveTo actionWithDuration:0.05 position:FD],nil]];

一旦精灵移动到所需的位置(FD),那么我想在那个时候调用一个函数。现在我正在安排一个选择器在“timeToTravel”延迟之后被调用,这是上述操作完成执行所花费的时间。(我使用的是调度程序而不是 performSelector,因为执行选择器更容易出现问题)

[self schedule:@selector(placeThatDamnBall) interval:timeToTravel+0.05];

-(void) placeThatDamnBall
{
[self unschedule:@selector(placeThatDammBall)];
[self ballPlacedIn:FD.x :FD.y :cb.type : cb.count];
}

但这并不完全可靠,并且在极少数情况下可能会导致问题,即在精灵到达目的地之前调用函数。有什么方法可以避免调用选择器并能够在精灵真正到达目的地后调用函数?

谢谢

4

1 回答 1

3

CCCallFunc在序列末尾添加一个:

[[crBalls[cb.count] getball] runAction:
    [CCSequence actions:
        [CCMoveTo actionWithDuration:timeToTravel position:ccp(xIntercept,yIntercept)],
        [CCMoveTo actionWithDuration:0.05 position:FD],
        [CCCallFunc actionWithTarget:self selector:@selector(placeThatDamnBall)],
        nil]];
于 2011-10-31T18:41:51.540 回答