检查节点是否正在处理操作?

时间:2014-08-01 19:58:06

标签: ios swift sprite-kit

我在一个方法上执行SKAction rotateToAngle。另一种方法我想知道动作是否仍在执行或是否已经结束。

我可以节省动作在属性中开始的时间并检查它但是我想知道是否有更简单的方法。

private func rotate(motionManager: CMMotionManager, gravity: CGVector) {
    let rotate = SKAction.rotateToAngle(CGFloat(M_PI * 5), duration: 5.0, shortestUnitArc: true)
    self.runAction(rotate)
}
private func actionRunning() --> Bool {

}

我尝试使用self.hasActions()但它总是返回true。关于如何在Swift上执行此操作的任何想法?

1 个答案:

答案 0 :(得分:0)

使用runAction时,您始终可以使用withKey参数。然后执行actionForKey:方法来确定它是否仍然存在。

在Objective-C中它看起来像这样:

[self runAction:[SKAction waitForDuration:0.1] withKey:@"waitTimer"];
[self actionForKey:@"waitTimer"];

我不熟悉Swift,但Apple Docs确实也支持Swift语言。

https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKNode_Ref/index.html#//apple_ref/occ/instm/SKNode/runAction:withKey

func runAction(_ action: SKAction!,
   withKey key: String!)