SKShapeNode .strokeColor 在更改时看起来与 .fillColor 相同 node.alpha

SKShapeNode .strokeColor to look same as .fillColor when change node.alpha

当我更改 SKShapeNode 的 .alpha 时,它的 stroke 显示自己好像节点的 .strokeColor 比它的 .fillColor 更亮。将 .lineWidth 设置为 0 会取消笔划提供的抗锯齿平滑度。将 .strokeColor 设置为 SKColor.clearColor.

也是如此

问题

更改 node.alpha 时使描边看起来与填充相同的最佳方法是什么,同时保持边缘的抗锯齿平滑度?

尽管可以通过获取节点的“颜色”HSBA 并将具有不同 alpha 的新颜色重新分配给 stroke(更多信息看this answer),因为节点的fill覆盖节点的strokestroke's alpha必须设置为0 这样实际上就不会被看到了。但这取消了抗锯齿。

所以看起来,要在不显示 stroke 的情况下实现平滑节点边缘的唯一方法是将 SKShapeNode 转换为 SKSpriteNode 并将 sprite.alpha 重置为想要。

这是 Swift

中的代码片段
let sprite = SKSpriteNode(texture: self.view!.textureFromNode(shapeNode))

没那么糟糕,因为根据 Apple's docs

The node being rendered does not need to appear in the view’s presented scene.

但是,您仍然必须能够从发生转换的地方访问 view