2011-10-31 69 views
1

我正在執行一個精靈的runAction以移動到某個位置。如何在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]; 
} 

但是,這不是完全可靠的,並且可能會導致問題,在極少數情況下可能會在sprite到達目的地之前調用該函數。有什麼辦法可以避免必須調用選擇器,並且一旦精靈真正到達目的地就能夠調用該函數?

感謝

回答

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]]; 
相關問題