SKShapeNode行中出现白线

时间:2015-06-20 19:36:04

标签: ios swift sprite-kit skshapenode

我正在使用SKShapeNodes绘制一条线。这条线不断“增长”,或总是向上移动。当用户点击屏幕时,该线应以45度角改变方向,向右或向左。它会这样做,但是由于某种原因,当它改变方向时,线条中会出现随机的白线。它们看起来像这样: enter image description here

那些白线不应该在那里,我不知道是什么造成了它们。 我正在使用以下代码创建该行: 每0.1秒,此功能称为

    func addPoint() {
    if (wayPoints.isEmpty) {
        wayPoints.append(CGPointMake(0, CGRectGetMinY(self.frame)))
    } else {
        if (currentPosition == Position.Right) {
            wayPoints.append(CGPointMake(wayPoints.last!.x + 1, wayPoints.last!.y + 1))
        } else if (currentPosition == Position.Left) {
            wayPoints.append(CGPointMake(wayPoints.last!.x - 1, wayPoints.last!.y + 1))
        } else {
            wayPoints.append(CGPointMake(0, wayPoints.last!.y + 1))
        }
    }
}

然后在update()函数中:

    func drawLines() {
    enumerateChildNodesWithName("line", usingBlock: {node, stop in
        node.removeFromParent()
    })

    if let path = createPathToMove() {
        let shapeNode = SKShapeNode()
        shapeNode.path = path
        shapeNode.name = "line"
        shapeNode.strokeColor = UIColor.blackColor()
        shapeNode.lineWidth = 20
        shapeNode.zPosition = 5
        shapeNode.lineCap = kCGLineCapRound
        self.addChild(shapeNode)
    }
}

createPathToMove看起来像这样:

    func createPathToMove() -> CGPathRef? {
    if wayPoints.count <= 1 {
        return nil
    }
    var ref = CGPathCreateMutable()

    for var i = 0; i < wayPoints.count; i++ {
        let p = wayPoints[i]

        if i == 0 {
            CGPathMoveToPoint(ref, nil, p.x, p.y)
        } else {
            CGPathAddLineToPoint(ref, nil, p.x, p.y)
        }
    }

    return ref
}

我在touchesBegan上更改了currentPosition变量(我只是将它与目前的相反)。 我已经环顾了一会儿,并没有发现任何与我的问题类似的东西。有什么特别的东西我必须做,以确保这些白线不出现?任何帮助都表示赞赏,我很乐意接受客观的c代码并将其转换为快速自己。

1 个答案:

答案 0 :(得分:0)

我通过将antialiasing设置为false来修复此问题。虽然作为一个友好的注释,但是当其他任何人遇到这个问题时,即使将抗锯齿设置为false,随机线仍会出现在模拟器上,但是当在实际设备上运行时它可以正常工作。我猜这只是模拟器渲染形状的一个错误。