【发布时间】:2017-05-04 02:24:27
【问题描述】:
我遇到了一个我很难理解的 SKShapeNodes 问题。为了帮助解释和展示我的问题,我创建了一个测试程序。在开始时,我创建了这样一行:
var points = [CGPoint(x: -372, y: 0), CGPoint(x: 372, y: 0)]
var Line = SKShapeNode(points: &points, count: points.count)
addChild(Line)
此时,我可以更改节点的位置,并打印出我期望的位置:
Line.position.y = Line.position.y - 50
print("LINEPOS =", Line.position)
打印出来:
LINEPOS = (0.0, -50.0)
这是有道理的,因为 SKShapeNode 的原始位置始终是 (0, 0)。但是,程序的下一部分不会以相同的方式工作。我使新点等于 Line 现在在屏幕上的坐标,并让 Line 等于它们,如下所示:
points = [CGPoint(x: -372, y: -50), CGPoint(x: 372, y: -50)]
Line = SKShapeNode(points: &points, count: points.count)
然后我再次改变 Line 的位置(这次我将它向下移动了 200,因此位置的变化更加明显),如下所示:
Line.position.y = Line.position.y - 200
print("LINEPOS =", Line.position)
打印出来:
LINEPOS = (0.0, -200.0)
尽管它正确地打印了位置,但很明显,线在屏幕上根本没有移动。它仍然与我让线等于新点时的位置相同。这意味着在让 SKShapeNode 等于一组新点后,它不再在屏幕上移动,而是在代码中显示它会移动。
我该如何解决这个问题?如果有人知道请帮忙,因为我真的很困惑。
【问题讨论】:
标签: swift sprite-kit skshapenode