使用SKShapeNode在Sprite Kit中绘制虚线

4 cgpath sprite-kit skshapenode swift

我提供了这个解决方案,但我不能把它变成快速的代码

这就是我的尝试

var pattern[2]:CGFloat; this 

var dashed: CGPathRef = CGPathCreateCopyByDashingPath(CGPathCreateCopyByDashingPath(path, transform, phase, lengths, count);

var myShapeNode: SKShapeNode!;

        var CGPathCreateCopyByDashingPath:CGPathRef;
Run Code Online (Sandbox Code Playgroud)

rak*_*hbs 11

这是你在swift中绘制虚线的方法.您可以根据需要更改参数.

let bezierPath = UIBezierPath()
let startPoint = CGPointMake(0, 250)
let endPoint = CGPointMake(450, 250)
bezierPath.moveToPoint(startPoint)
bezierPath.addLineToPoint(endPoint)

var pattern : [CGFloat] = [10.0, 10.0]
let dashed = CGPathCreateCopyByDashingPath (bezierPath.CGPath, nil, 0, pattern, 2)

var shapeNode = SKShapeNode(path: dashed)
shapeNode.position = CGPointMake(100, 100)
self.addChild(shapeNode)
Run Code Online (Sandbox Code Playgroud)

  • 在Swift 3中,``CGPathCreateCopyByDashingPath`被替换为`path.copy(dashingWithPhase:lengths:)` (4认同)

小智 7

在快速4中:

    let square = SKShapeNode(rectOf: CGSize(width: 64, height: 64))
    let pattern : [CGFloat] = [4.0, 4.0]

    let dashed = square.path?.copy(dashingWithPhase: 1, lengths: pattern)

    let shapeNode = SKShapeNode(path: dashed!)
    shapeNode.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
    shapeNode.fillColor = SKColor.clear
    shapeNode.strokeColor = SKColor.red
    shapeNode.lineWidth = 2
    self.addChild(shapeNode)
Run Code Online (Sandbox Code Playgroud)