SKShapeNode填充颜色时如何改变填充规则
How to change the fill rule of SKShapeNode when filling color
我正在使用SKShapeNode创建一个在我的游戏中使用的视图元素,它应该如下图所示,只有2条可见曲线和填充颜色。
这是我的代码:
override func sceneDidLoad() {
let shapeNode = SKShapeNode()
shapeNode.fillColor = .red
shapeNode.strokeColor = .white
shapeNode.lineWidth = 5
let path = CGMutablePath()
let radius:CGFloat = 250
path.addArc(center: CGPoint(x:0, y:300), radius: radius, startAngle: CGFloat.pi*7/6, endAngle: CGFloat.pi*11/6, clockwise: false)
path.addArc(center: CGPoint(x:0, y:-300), radius: radius, startAngle: CGFloat.pi*1/6, endAngle: CGFloat.pi*5/6, clockwise: false)
shapeNode.path = path
self.addChild(shapeNode)
}
但是我在右侧多了一条直线,这不是我想要的。
所以我尝试直接移动到另一个弧线
path.addArc(center: CGPoint(x:0, y:300), radius: radius, startAngle: CGFloat.pi*7/6, endAngle: CGFloat.pi*11/6, clockwise: false)
path.move(to: CGPoint(x:cos(CGFloat.pi/6)*radius, y: -300+sin(CGFloat.pi/6)*radius))
path.addArc(center: CGPoint(x:0, y:-300), radius: radius, startAngle: CGFloat.pi*1/6, endAngle: CGFloat.pi*5/6, clockwise: false)
我得到了这样的东西,这也不是我想要的。
我在查看Apple文档后了解到可以使用CGPathFillRule更改CAShapeLayer的填充规则,但我没有想法如何连接 SKShapeNode 和 CGPathFillRule。
对此有什么想法吗?
我认为填充规则不会解决这里的问题。您需要一种方法来分隔要描边的边框部分。最简单的可能是创建两个形状节点,一个像第一种情况一样完成并填充,第二个像第二种情况一样完成并描边。
我正在使用SKShapeNode创建一个在我的游戏中使用的视图元素,它应该如下图所示,只有2条可见曲线和填充颜色。
这是我的代码:
override func sceneDidLoad() {
let shapeNode = SKShapeNode()
shapeNode.fillColor = .red
shapeNode.strokeColor = .white
shapeNode.lineWidth = 5
let path = CGMutablePath()
let radius:CGFloat = 250
path.addArc(center: CGPoint(x:0, y:300), radius: radius, startAngle: CGFloat.pi*7/6, endAngle: CGFloat.pi*11/6, clockwise: false)
path.addArc(center: CGPoint(x:0, y:-300), radius: radius, startAngle: CGFloat.pi*1/6, endAngle: CGFloat.pi*5/6, clockwise: false)
shapeNode.path = path
self.addChild(shapeNode)
}
但是我在右侧多了一条直线,这不是我想要的。
所以我尝试直接移动到另一个弧线
path.addArc(center: CGPoint(x:0, y:300), radius: radius, startAngle: CGFloat.pi*7/6, endAngle: CGFloat.pi*11/6, clockwise: false)
path.move(to: CGPoint(x:cos(CGFloat.pi/6)*radius, y: -300+sin(CGFloat.pi/6)*radius))
path.addArc(center: CGPoint(x:0, y:-300), radius: radius, startAngle: CGFloat.pi*1/6, endAngle: CGFloat.pi*5/6, clockwise: false)
我得到了这样的东西,这也不是我想要的。
我在查看Apple文档后了解到可以使用CGPathFillRule更改CAShapeLayer的填充规则,但我没有想法如何连接 SKShapeNode 和 CGPathFillRule。
对此有什么想法吗?
我认为填充规则不会解决这里的问题。您需要一种方法来分隔要描边的边框部分。最简单的可能是创建两个形状节点,一个像第一种情况一样完成并填充,第二个像第二种情况一样完成并描边。