Штрихи SKShapeNode показывают разрывы при рисовании с помощью CGPath - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь нарисовать фигуру, используя CGPath и SKShapeNode. Однако независимо от того, какие комбинации lineJoin или lineCap я пытаюсь использовать, строки имеют пробелы.

enter image description here

import PlaygroundSupport
import SpriteKit

class GameScene: SKScene {

    override func didMove(to view: SKView) {
        super.didMove(to: view)
        let path = CGMutablePath()
        path.move(to: NSPoint(x: -66.585, y: 1.125))
        path.addCurve(to:  NSPoint(x: -60.585, y: -41.765), control1: NSPoint(x: -66.585, y: 1.125), control2: NSPoint(x: -65.835, y: -32.735))
        path.addCurve(to:  NSPoint(x: 66.585, y: -20.3150000000001), control1: NSPoint(x: -60.585, y: -41.765), control2: NSPoint(x: -3.39500000000001, y: -1.88499999999999))
        path.addCurve(to:  NSPoint(x: 56.545, y: 18.235), control1: NSPoint(x: 66.125, y: -7.09500000000003), control2: NSPoint(x: 62.695, y: 6.16499999999996))
        path.addCurve(to:  NSPoint(x: -66.585, y: 1.125), control1: NSPoint(x: 56.055, y: 19.1849999999999), control2: NSPoint(x: -15.415, y: 41.765))
        path.closeSubpath()
        let shapeNode = SKShapeNode(path: path)
        shapeNode.fillColor = .red
        shapeNode.lineWidth = 10
        shapeNode.lineJoin = .round
        shapeNode.strokeColor = .white
        addChild(shapeNode)
    }
}

let sceneView = SKView(frame: CGRect(x:0 , y:0, width: 640, height: 480))
if let scene = GameScene(fileNamed: "GameScene") {
    scene.scaleMode = .aspectFill
    sceneView.presentScene(scene)
}

PlaygroundSupport.PlaygroundPage.current.liveView = sceneView

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 24 июня 2018

Это выглядит странно для меня:

    path.move(to: NSPoint(x: -66.585, y: 1.125))
    path.addCurve(to:  NSPoint(x: -60.585, y: -41.765), control1: NSPoint(x: -66.585, y: 1.125), control2: NSPoint(x: -65.835, y: -32.735))

Вы переходите к (-66,58., 1,125). Затем вы добавляете кривую, в которой первая точка (-60,585, -41,765) и первая контрольная точка совпадают с исходной точкой, в которую вы переместились. Кажется, это вызовет некоторые странные проблемы. Я думаю, вы хотите, чтобы точка, которую вы перемещаете, была первой точкой кривой, а не ее контрольной точкой.

...