如何即时修改 SKShapeNode 的路径?
How to modify the path of SKShapeNode on the fly?
我在 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)
路径是 class 成员:
var path: CGMutablePath
然后在 update
场景方法中,我向路径添加行:
path.addLine(to: points[index])
我希望看到在 sprite 上绘制新线条。但是,没有出现新行。如果在 addLine 之后我将路径重新分配给 SKShapeNode 的路径,那么我会看到它。但是重新绘制看起来并不是最佳选择。
在 SKShapeNode 上更新路径的正确方法是什么?我想要实现的是每半秒看到一个新的线段。
您无法更新路径,只能用新路径替换它(即使这意味着获取路径的副本,使其可变,然后将其重新分配回您的节点)
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)
路径是 class 成员:
var path: CGMutablePath
然后在 update
场景方法中,我向路径添加行:
path.addLine(to: points[index])
我希望看到在 sprite 上绘制新线条。但是,没有出现新行。如果在 addLine 之后我将路径重新分配给 SKShapeNode 的路径,那么我会看到它。但是重新绘制看起来并不是最佳选择。
在 SKShapeNode 上更新路径的正确方法是什么?我想要实现的是每半秒看到一个新的线段。
您无法更新路径,只能用新路径替换它(即使这意味着获取路径的副本,使其可变,然后将其重新分配回您的节点)
SKShapeNode 使用您分配给它的路径的副本,因此即使您使用可变路径,您也不会看到更改。
最简单的方法是在更改路径后,再次将其分配给形状。