Cocos2d iphone 在运行时告知CCAction何时完成
当我的动画序列运行完毕时,我希望能够停止所有动作,我将如何做到这一点?现在我有:Cocos2d iphone 在运行时告知CCAction何时完成,cocos2d-iphone,Cocos2d Iphone,当我的动画序列运行完毕时,我希望能够停止所有动作,我将如何做到这一点?现在我有: CCAnimation *spinAnim = [CCAnimation animationWithSpriteFrames:spinAnimFrames delay:0.1125f]; self.spinAction = [CCAnimate actionWithAnimation:spinAnim]; 后来: [self.cha
CCAnimation *spinAnim = [CCAnimation
animationWithSpriteFrames:spinAnimFrames delay:0.1125f];
self.spinAction = [CCAnimate actionWithAnimation:spinAnim];
后来:
[self.character runAction:self.spinAction];
那么,我怎样才能判断旋转动作已经完成呢?您可以使用一个序列
CCCallFunc *callMe = [CCCallFunc actionWithTarget:self selector:@selector(doneSpin)];
CCSequence *seq = [CCSequence actions:spinAnim,callMe,nil];
self.spinAction = seq;
[self.character runaction:self.spinAction];
以及代码中的其他地方:
-(void) doneSpin {
// spin action done, do whatever here !
}
您可以使用CCCallFunc安排回调,方法是将其添加为一系列操作中的最后一个操作,如下所示:
[self.character runAction:[CCSequence actions:self.spinAction,[CCCallFunc actionWithTarget:self selector:@selector(stopAllActions)],nil]];
希望有帮助 我刚刚用这样的块实现了它: (on.h) (on.m)
在cocos2d iphone中,您可以使用CCCallBlock的CCCallFunc或CCCallBlock来获取通知,通知CCAction已结束。由于某种原因,此方法给我一个错误,说spinAnim是未声明的标识符。Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh。处理这些事情的一个好方法是使用积木,我鼓励你仔细阅读。谢谢!我会做我的研究的我感谢一切!很高兴能帮上忙你可以接受答案并投票表决。。谢天谢地,幸运的是我没有足够的支持率:(我只能选择一个答案,他的回答更深入一些。
typedef void(^actionTerminated)(void);
-(void) doJump:(float)delay
times:(int)times
actionBlock:(actionTerminated)actionBlock {
// here there is your code, physicsBody adjusts..
id block = [CCActionCallBlock actionWithBlock:^
{
// stop sound effect if there was
actionBlock();
}];
actionSequence = [CCActionSequence actionWithArray:@[self.action,block]];
[self.sprite runAction:actionSequence];
}
// when you call do jump :
[self doJump:0.45 times:1 actionBlock^{
// here jump action is terminated,do whatever you want..
}];