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
覆盖节点的stroke
,stroke'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
。
当我更改 SKShapeNode 的 .alpha
时,它的 stroke
显示自己好像节点的 .strokeColor
比它的 .fillColor
更亮。将 .lineWidth
设置为 0 会取消笔划提供的抗锯齿平滑度。将 .strokeColor
设置为 SKColor.clearColor
.
问题
更改 node.alpha
时使描边看起来与填充相同的最佳方法是什么,同时保持边缘的抗锯齿平滑度?
尽管可以通过获取节点的“颜色”HSBA
并将具有不同 alpha
的新颜色重新分配给 stroke
(更多信息看this answer),因为节点的fill
覆盖节点的stroke
,stroke'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
。