我创建了一个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
有关但是,它是我能找到的最接近的,并且看起来不是同一个问题(表面上)。
答案 0 :(得分:0)
发现问题。这是一个合乎逻辑的问题。正在添加SKSpriteNode并开始播放声音FX,但是在下一帧左右,精灵被删除了。 结果,似乎没有显示精灵,但没有时间进入视野。声音FX继续播放,因此混乱。