【问题标题】:Check if node has actions being processed?检查节点是否有正在处理的操作?
【发布时间】:2014-08-01 19:58:06
【问题描述】:

我正在对一种方法执行 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 上执行此操作的任何想法?

【问题讨论】:

  • 最后带有运行块操作的序列

标签: ios swift sprite-kit


【解决方案1】:

在使用 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!)

【讨论】:

    猜你喜欢
    • 2023-01-04
    • 2017-06-03
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2012-08-12
    • 2021-06-20
    相关资源
    最近更新 更多