在 cocos2d 后停止 Sprite 动画

Stop Sprite Animation in cocos2d

这是显示 sprite sheet 动画的代码,如果游戏中发生了什么,动画效果很好,但在动画帧序列完成后它不会停止,我做了很多事情来停止动画,但没有任何解决方案,这是我的代码

if(m_bEffectChangeColor){

`

        m_gamecoinffect = [CCSprite spriteWithSpriteFrameName:@"powerup0001"];
          [self addChild:m_gamecoinffect z:3];



        CCAnimate *coineffect = [CCAnimate actionWithSpriteSequence:@"powerup%04d" numFrames:30 delay:0.1f restoreOriginalFrame:NO];
        [m_gamecoinffect runAction:[CCRepeatForever actionWithAction:coineffect]];

        m_gamecoinffect.position = ptEffectPos;

        CCCallBlock *block = [CCCallBlock actionWithBlock:^{
            //[m_gamecoinffect stopAllActions];
            [self removeChild:m_gamecoinffect cleanup:YES];

        }];
        CCDelayTime *time = [CCDelayTime actionWithDuration:1];
        [m_gamecoinffect runAction:[CCSequence actions:time, block, nil]];

`

上面的代码我尝试添加计时器和我知道的一切,但没有任何效果,我想停止动画并从图层中删除那些精灵。

提前致谢。

动画不会停止,因为CCRepeatForever是永远动画的动作,意思是连续不断。更改以下行:

[m_gamecoinffect runAction:[CCRepeatForever actionWithAction:coineffect]];

[m_gamecoinffect runAction:coineffect];