Sprite kit SpriteKit SKAction组正在运行,但SKSpriteNode映像未受影响

Sprite kit SpriteKit SKAction组正在运行,但SKSpriteNode映像未受影响,sprite-kit,skspritenode,skaction,Sprite Kit,Skspritenode,Skaction,我创建了一个SKAction组,它在播放音效的同时改变SkSpritode图像的alpha和旋转。但是,当我运行action时:会播放声音效果,但图像保持不变 在我的子类SKSpriteNode The Sheep中,我有以下代码,在儿童时期添加了另一个SKSpriteNode作为食物: -(void)setupEatingAction { _grassEating = [SKSpriteNode spriteNodeWithImageNamed:@"SheepFood"]; _

我创建了一个SKAction组,它在播放音效的同时改变SkSpritode图像的alpha和旋转。但是,当我运行action时:会播放声音效果,但图像保持不变

在我的子类SKSpriteNode The Sheep中,我有以下代码,在儿童时期添加了另一个SKSpriteNode作为食物:

-(void)setupEatingAction
{
    _grassEating = [SKSpriteNode spriteNodeWithImageNamed:@"SheepFood"];
    _grassEating.size = self.size;
    _grassEating.anchorPoint = CGPointMake(0.5, 0.5);
    _grassEating.alpha = 0.5;
    _grassEating.zPosition = -1;

    SKAction *fadeIn = [SKAction fadeInWithDuration:0.01];
    SKAction *soundFX = [SKAction playSoundFileNamed:@"Munching2s.mp3" waitForCompletion:NO];
    SKAction *rotate = [SKAction sequence:@[[SKAction rotateToAngle:degsToRads(-20.0) duration:kMovementAnimationInterval/4.0],[SKAction rotateToAngle:degsToRads(0.0) duration:kMovementAnimationInterval/4.0]]];
    SKAction *eatAction = [SKAction group:@[fadeIn,soundFX,rotate]];

    _grassEating.userData = [NSMutableDictionary dictionaryWithObject:eatAction forKey:KEY_EatAction];

    [self addChild:_grassEating];
}
然后,当我希望操作组运行时,我会执行以下操作:

-(void)eat
{
    if(![_grassEating actionForKey:KEY_EatAction])
    {
        [_grassEating runAction:[_grassEating.userData objectForKey:KEY_EatAction] withKey:KEY_EatAction];
    }
}
_吃草是我的父节点的属性:

@property (nonatomic,retain) SKSpriteNode *grassEating;
正如我所说,我可以听到声音效果播放,但图像没有改变?!?就我的一生而言,我不知道为什么,我花了很多时间试图弄清楚到底发生了什么。。。有什么想法吗

我还应该指出,虽然我不认为这与它有任何关系,但这个问题出现在模拟器和硬件上——都运行iOS7

我不知道这是否有关系


但是,这是我能找到的最接近的问题,表面上似乎不是同一个问题。

找到了问题。这是一个合乎逻辑的问题。添加了SKSpriteNode,开始播放音效,但在下一帧左右,精灵被移除。
结果,精灵似乎没有显示,但没有时间移动到视图中。声音效果继续播放,因此出现了混乱。

您是否尝试过在不将其保存到userData的情况下执行此操作?是的。我最初就是这样做的。然后在查看我链接的线程后,我将其更改为我介绍的方法。两种方法得到的结果都是一样的——声音没有变化,但图像没有变化。你有没有试过检查\u grassEating是否有效?尝试将其设置为隐藏或从其父级中删除,以查看对精灵的引用是否正确。\u grassEating有地址,我可以将其删除。我检查userData是否包含一个对象,可能是我放在其中的SKAction。这就是你所说的有效吗?@Wraithseekerr建议的有趣发展。我现在已经尝试在setupEatingAction中初始创建精灵时隐藏它。然后在调用eat时取消隐藏。当eat被调用时,精灵不见踪影,但你仍然可以听到声音FX。。。