2013-09-25 178 views
7

如何在运行动作之前检查SKNode是否已经在运行一个动作? 我希望能够做这样的事情......检查SKNode是否正在运行SKAction

if (![mySprite isRunningActions]) { 
    [mySprite runAction:action]; 
} 

如果在办法,我想保持动作状态创建一个新的BOOL属性没有内置。

回答

11

查看使用任何SKAction基于密钥的方法的命名操作。所以你应该使用与runAction:相同的命名等价来运行你的动作,即runAction:withKey:。如果具有相同密钥的操作已在运行,则在新操作添加之前将其删除。或者,使用actionForKey:来查看某个操作是否已在运行,就像您现在正在代码中尝试执行的操作一样,然后removeActionForKey:将其删除或根据需要进行处理。

+1

这是一个更好的答案,因为你可以检查一个特定的动作,而不是检查精灵是否正在运行任何动作(当然,那就是如果你知道动作的关键:) – Septronic

14

对不起,对于迟来的答案,但你可以使用精灵方法hasActions来检查精灵当前是否正在运行任何操作。

if (![mySprite hasActions]) 
{ 
    [mySprite runAction:action]; 
}