SpriteKit SKAction 组是 运行,但 SKSpriteNode 图像不受影响

SpriteKit SKAction group is running, but the SKSpriteNode image isn't being affected

我创建了一个 SKAction 组,它在播放音效的同时改变 SKSpriteNode 图像(透明度和旋转)。但是,当我运行Action: 播放音效时,图像保持不动。

在我的子类 SKSpriteNode(The Sheep)中,我有以下代码添加另一个 SKSpriteNode(The Food)作为子节点:

-(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];
    }
}

_grassEating 是我父节点的 属性:

@property (nonatomic,retain) SKSpriteNode *grassEating;

正如我所说,我能听到播放的音效,但图像没有改变?!?对于我的生活,我无法弄清楚为什么,我花了很多时间试图弄清楚发生了什么......有什么想法吗?

我还应该指出(虽然我不认为这与它有任何关系)这个问题出现在模拟器和硬件上 - 运行ning iOS7.

不知道有没有关系iOS Spritekit Cannot Run SKAction on a Subclassed SKSpriteNode

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

找到问题了。这是一个合乎逻辑的问题。 SKSpriteNode 被添加,声音 FX 开始播放,但在下一帧左右,精灵被删除。 结果,看起来精灵没有显示,但没有时间进入视野。声音 FX 继续播放,因此混乱。