如何动态修改SKShapeNode的路径?

时间:2018-12-24 14:12:37

标签: swift sprite-kit skshapenode

在didMove中的某个地方我正在创建SKShapeNode

path.move(to: points.first!)

let linearShapeNode = SKShapeNode()
linearShapeNode.path = path
linearShapeNode.strokeColor = .black
linearShapeNode.lineWidth = 3.0
linearShapeNode.lineCap = .round
someSprite.addChild(linearShapeNode)

路径是类成员:

var path: CGMutablePath

然后在场景的update方法中,我向路径添加线:

path.addLine(to: points[index])

我希望在子画面上看到新的线条。但是,没有新行出现。如果在addLine之后我将路径重新分配给SKShapeNode的路径,那么我会看到它。但是重新绘制似乎不是最佳选择。

在SKShapeNode上更新路径的正确方法是什么?我想要达到的目的是每半秒钟看到一个新的线段。

1 个答案:

答案 0 :(得分:1)

您无法更新路径,只能将其替换为新路径(即使这意味着获取路径的副本,使其可变,然后将其重新分配回您的节点)

SKShapeNode使用分配给它的路径的副本,因此,即使您使用可变路径,也不会看到更改。

最简单的操作是更改路径后,再次将其分配给形状。