跳过SKActions

时间:2016-03-06 01:37:04

标签: macos sprite-kit skaction

在我的场景开始时,我正在运行一系列不同的动作作为关卡的介绍。我想让用户可以跳过它。有没有办法用SKAction来处理这个问题? SKAction是我的赌注,但也许有更好的方法来做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这假设你想要点击停止动作:

一种非常简单但可能不稳定的方法是将动作运行的节点的速度调整到一个非常高的数字,只需记住在需要节点时重置它。

更稳定的简单方法是保存您的操作并以零持续时间重新应用它们。

执行此操作的最佳方法是为Dictionary创建SKAction,如下所示:

var actionDict = [String,SKAction]()

然后只需使用密钥保存所有操作,以便将来可以访问它:

actionDict["moveUp"] = SKAction.moveToY(100,duration:100)

现在你有了它的键,在运行你的动作时,只需分配相同的键:

node.runAction(actionDict["moveUp"],withKey:"moveUp")

然后,当您需要结束它时,只需删除所需的操作:

node.removeActionForKey("moveUp")

并重新申请,持续时间为0:

//if we want to retain the old duration, use copy
let action = actionDict["moveUp"].copy()
action.duration = 0
node.runAction(action,withKey:"moveUp")

注意,此方法仅适用于操作执行To事件的情况,如果执行By事件,则需要确定最终目标点,并将其设置为持续时间为0的move