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

时间:2015-05-04 13:26:18

标签: sprite-kit skspritenode skaction

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

在我的子类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;

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

我还应该指出(虽然我认为与此无关)这个问题出现在模拟器和硬件上 - 都运行iOS7。

我不知道这是否与iOS Spritekit Cannot Run SKAction on a Subclassed SKSpriteNode

有关

但是,它是我能找到的最接近的,并且看起来不是同一个问题(表面上)。

1 个答案:

答案 0 :(得分:0)

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