如何将setKey for值与SpriteKit一起使用?

时间:2013-12-25 22:56:42

标签: ios objective-c ios7 sprite-kit

我正在使用SpriteKit制作平台游戏,我正在尝试使用方法setValue:forKey:touchesMoved:withEvent方法中,因为我有一团糟:我需要删除类型为SKAction的动画。我使用if在SKAction中运行此touchesMoved:withEvent动画,检查所有必需的条件。其中一个条件是:

if(NO ==[[self childNodeWithName:@"hero"] hasActions])
{
     //code to run animation
}

我检查它是否没有动作,因为我不想创建比需要更多的动画。 当我用手指触摸屏幕时,动画将永远运行,只有当我从屏幕上移开手指时,才会移除touchesEnded:withEvent方法

因此,在我触摸屏幕之前,英雄动画将永远循环。我遇到的问题是,如果我将手指从屏幕右侧移动到屏幕左侧,动画仍然是相同的:即使精灵向左移动,英雄也会向右移动,因为if检查是否有动作,并且不要在左侧创建新动画,当然也不要删除正确的动画。

我想我可以修复它为动画动作设置一个键,然后使用if和使用手指的位置以相同的方法删除它。问题是我不知道如何使用removeActionForKey方法。我试过阅读文档,但我没有发现它很清楚。谁能给我发一些如何使用它的代码示例?

1 个答案:

答案 0 :(得分:0)

您需要使用runAction:withKey:方法:

// if direction == right
[node removeActionForKey:@"left"];
SKAction *animationRight = [SKAction animateWithTextures:......];
[node runAction:animationRight withKey:@"right"];

...........

// if direction == left
[node removeActionForKey:@"right"];
SKAction *animationLeft = [SKAction animateWithTextures:......];
[node runAction:animationLeft withKey:@"left"];