我有以下代码将SKSpriteNode从屏幕外的位置移动到屏幕上的位置。 spawnNode在屏幕外创建一个起始位置的节点。 nodePositions是一个包含x,y和Zposition点的struct数组。代码确实将节点移动到我想要的位置。但是,我想使用当前节点位置来稍后定位更多节点。打印语句显示相同的结果。 Pre&帖子是一样的。这对我来说毫无意义。任何人都可以向我解释这个吗?看起来可能需要制作连续节点的子节点。我不想这样做。
spawnNode()
allNodes[0].texture = SKTexture(imageNamed: imageName)
print("Pre: x: \(String(describing: allNodes[0].position.x))")
print("Pre: y: \(String(describing: allNodes[0].position.y))")
let duration: CGFloat = 0.5
moveNodePos = SKAction.moveBy(x: nodePositions[0].posX, y: nodePositions[0].posY, duration: TimeInterval(duration))
moveNodePos.timingMode = .easeIn
allNodes[0].zPosition = nodePositions[0].zPosition
allNodes[0].run(moveNodePos)
print("Post: x: \(String(describing: allNodes[0].position.x))")
print("Post: y: \(String(describing: allNodes[0].position.y))")
前:x:0.0 上一个:y:500.0 发布:x:0.0 发布:y:500.0
答案 0 :(得分:1)
SKAction在0.5秒的时间内移动节点。执行行# Needed to properly get a criteria back as json
#
# @example Get the criteria as json.
# Person.where(:title => "Sir").as_json
#
# @param [ Hash ] options Options to pass through to the serializer.
#
# @return [ String ] The JSON string.
def as_json(options = nil)
entries.as_json(options)
end
,开始allNodes[0].run(moveNodePos)
操作,并立即执行其后面的代码(即打印语句)。这意味着当您执行print语句时,操作仍未完成且节点尚未移动。在动作完成后尝试打印节点的位置,例如使用
moveBy
希望这有帮助!
答案 1 :(得分:0)
SKAction
随着时间的推移而发生,因为程序会反复通过the rendering loop。
由于程序没有通过allNodes[0].run(moveNodePos)
运行语句和后面的print
语句之间的呈现循环,因此该操作没有机会在时间之前修改节点的位置。印刷声明。