填充颜色时如何更改SKShapeNode的填充规则

问题描述 投票:1回答:1

我正在使用SKShapeNode创建用于游戏中的视图元素,它应该类似于下图,其中只有2条可见曲线并内部填充颜色。

enter image description here

这是我的代码:

    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)
    }

但是我在右侧有多余的直线,这不是我想要的。

enter image description here

所以我试图直接移动到另一个弧线

        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)

我有类似的东西,我也不想要。

enter image description here

我了解到我可以在检查Apple文档后使用CGPathFillRule来更改CAShapeLayer的填充规则,但是我不知道如何连接SKShapeNodeCGPathFillRule

对此有任何想法吗?

ios swift sprite-kit cgpath skshapenode
1个回答
1
投票

我认为填充规则不会在这里解决问题。您需要一种方法来分隔要描边的边框部分。最简单的方法可能是创建两个形状节点,一个在您的第一种情况下完成并填充,然后在第二种情况下完成并描边。

© www.soinside.com 2019 - 2024. All rights reserved.