我想在我的spriteNode上运行两个动画,具体取决于它的旋转.如果值为负,则运行其中一个动画,如果它是正的,则运行另一个.我设法做到这一点(但是我有一个问题).如果Animation1正在运行,并且zRotation更改为正,则它们都会运行,因为它们将永远重复.所以我这样做:
NSMutableArray *walkingTextures = [NSMutableArray arrayWithCapacity:14]; for (int i = 1; i < 15; i++) { Nsstring *textureName = [Nsstring stringWithFormat:@"character%d",i]; SKTexture *texture = [SKTexture textureWithImageNamed:textureName]; [walkingTextures addobject:texture]; } SKAction *spriteAnimation = [SKAction animateWithTextures:Textures timePerFrame:0.04]; repeatWalkAnimation = [SKAction repeatActionForever:spriteAnimation]; [sprite runAction:repeatWalkAnimation withKey:@"animation1"];
然后当我想要停止:
[self removeActionForKey:@"animation1"];
但是它一直在运行,那么我该怎么停止呢?谢谢!
解决方法
该方法应该在运行SKAction的节点上调用.
更改
[self removeActionForKey:@"animation1"];
至
[sprite removeActionForKey:@"animation1"];