我正在开发一个简单的cocos2d游戏,其中我想同时为两个CCSprite
设置动画,为此我只需在{CCSprite'上设置CCAction
s,如下所示。
[first runAction:[CCMoveTo actionWithDuration:1 position:secondPosition]];
[second runAction:[CCMoveTo actionWithDuration:1 position:firstPosition]];
现在我想等到动画完成,所以我可以执行下一步。我应该如何等待完成这些动画?
实际上有两个方法调用,第一个通过上面的代码激活对象,第二个调用执行另一个动画。
我需要延迟第二个方法调用,直到第一个动画完成为止。 (我不想使用CCCallBlock
块,因为我想从第一个调用者调用第二个方法。
修改
我试过了..
__block BOOL moving = YES;
[second runAction:[CCSequence actions:[CCMoveTo actionWithDuration:1 position:firstPosition], [CCCallBlockN actionWithBlock:^(CCNode *node){
CCLOG(@"\n\n\n\n\n\n\n\nMovement Finished\n\n\n\n\n\n\n\n");
moving = NO;
}],nil]];
while(moving);
但CCCallBlock
从未被调用,因此永远陷入while
loop = /
答案 0 :(得分:1)
如果我不想从cocos的文档中挖掘它,我会实现自己的观察者对象,观察一组动画是否已经完成。它只需要很少的快速步骤:
PendingOperationsCounter
PendingOperationsCounter
PendingOperationsCounter
PendingOperationsCounter
完成!
答案 1 :(得分:0)
首先使用CCSequence而不是简单的CCMoveTo,1)使用MoveTo,2)使用CallBlock开始第二个。在要启动第二个的调用块中,再次使用CCSequence 1)moveTo,以及2)调用选择器来执行您想要执行的任何操作。它将在这个用例中起作用。有关更通用的方法,请按照上述答案作为指导。