0

コード ::

if (CGRectIntersectsRect(food.sprite.boundingBox, playerRect)) {
    [food.sprite stopAllActions]; 

    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:

    [NSString stringWithFormat:@"newpackman2.png", 0]]];

    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:

    [NSString stringWithFormat:@"newpackman3.png", 1]]];

    walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.2f];

    self.walkAction = [CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];

    self.walkAction.tag = 1;
    [chef runAction:_walkAction];
}

オブジェクトがシェフと衝突するとアニメーションが開始されますが、継続的に実行されます。
3〜4秒後にアニメーションを停止したい。
私は使用[sprite stopActionByTag:1]しましたが、私にはうまくいきません。開始すると一時停止しません。

4

3 に答える 3

2

たとえば、すべてのアニメーションを停止してそこのstopAllActionsメソッドを呼び出すアクション ブロックを作成できます。

CCSprite *sprite = ...;

CCCallBlock *block = [CCCallBlock actionWithBlock:^{
            [sprite stopAllActions];
        }];

CCDelayTime を使用して遅延を発生させます

CCDelayTime *time = [CCDelayTime actionWithDuration:4];


[sprite runAction:[CCSequence actions:time, block, nil]];
于 2013-03-19T07:13:32.997 に答える
0

Cocos2d では、stopAllActions は同じノードに追加されたすべてのアクションを停止します。停止しない場合は、間違ったノードを参照していることを意味します。右のスプライトで stopAllActions を呼び出したことを確認してください。

于 2013-03-19T07:12:18.983 に答える
0
CCDelayTime *time = [CCDelayTime actionWithDuration:10];// After 10 mile seconds

[sprite runAction:[CCSequence actions:time, block, nil]];
于 2013-03-19T07:14:50.250 に答える