跳过 SKActions
Skipping SKActions
在我的场景开始时,我 运行 一堆不同的动作作为关卡的介绍。我想让用户可以跳过它。有没有办法用 SKAction 来处理这个问题? SKAction 是我的赌注,但也许有更好的方法来做到这一点。有什么想法吗?
假设您想要点击以停止操作:
一种非常简单但可能不稳定的方法是将节点的速度调高,动作是 运行 到一个非常高的数字,如果您需要节点,请记住重置它。
一种更稳定的简单方法是保存您的操作并在持续时间为零的情况下重新应用它们。
最好的方法是为您的 SKAction
创建一个 Dictionary
,如下所示:
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")
注意,此方法仅在action做To事件时有效,如果做的是By事件,则需要弄清楚最终的目标点,并使其成为一个持续时间为0的moveTo a
在我的场景开始时,我 运行 一堆不同的动作作为关卡的介绍。我想让用户可以跳过它。有没有办法用 SKAction 来处理这个问题? SKAction 是我的赌注,但也许有更好的方法来做到这一点。有什么想法吗?
假设您想要点击以停止操作:
一种非常简单但可能不稳定的方法是将节点的速度调高,动作是 运行 到一个非常高的数字,如果您需要节点,请记住重置它。
一种更稳定的简单方法是保存您的操作并在持续时间为零的情况下重新应用它们。
最好的方法是为您的 SKAction
创建一个 Dictionary
,如下所示:
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")
注意,此方法仅在action做To事件时有效,如果做的是By事件,则需要弄清楚最终的目标点,并使其成为一个持续时间为0的moveTo a