1

アニメーション シーケンスの実行が終了したときにすべてのアクションを停止できるようにしたいのですが、どうすればよいですか? 今私は持っています:

CCAnimation *spinAnim = [CCAnimation
                                 animationWithSpriteFrames:spinAnimFrames delay:0.1125f];
        self.spinAction = [CCAnimate actionWithAnimation:spinAnim];

そして後で:

[self.character runAction:self.spinAction];

では、スピン アクションが終了したことをどのように判断できますか?

4

3 に答える 3

3

シーケンスを使用できます

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 !

}
于 2013-09-18T03:35:10.543 に答える
0

次のように、一連のアクションの最後のアクションとして追加することで、CCCallFunc を使用してコールバックを配置できます。

[self.character runAction:[CCSequence actions:self.spinAction,[CCCallFunc actionWithTarget:self selector:@selector(stopAllActions)],nil]];

それが役に立てば幸い!

于 2013-09-18T03:39:21.447 に答える
0

私はちょうどこのようなブロックでそれを実現しました:

(.h で)

typedef void(^actionTerminated)(void);

(.m)

-(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..
}];
于 2015-07-10T07:44:02.837 に答える