移动节点后,SKSpriteNode的X,Y坐标不会发生变化

时间:2017-12-22 17:57:16

标签: ios sprite-kit skspritenode

我有以下代码将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

2 个答案:

答案 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语句之间的呈现循环,因此该操作没有机会在时间之前修改节点的位置。印刷声明。