【问题标题】:Drawing a Line that Changes Direction画一条改变方向的线
【发布时间】:2015-07-04 20:44:41
【问题描述】:

我目前正在尝试制作一个包含一条直线向上的应用程序,但是当点击屏幕时,它会以 45 度角(向左或向右)变化。

我正在为此创建路径:

        var path = CGPathCreateMutable()
    for var i = 0; i < wayPoints.count; i++ {
        let p = wayPoints[i]
        if i == 0 {
            CGPathMoveToPoint(path, nil, p.x, p.y)
        } else {
            CGPathAddLineToPoint(path, nil, p.x, p.y)
        }
    }

然后我像这样填充 wayPoints 数组(这段代码每秒被调用几次):

        if (wayPoints.isEmpty) {
        wayPoints.append(CGPointMake(0, CGRectGetMinY(self.view!.frame)))
    } else {
        if (wayPoints.count >= 30) {
            while (wayPoints.count >= 30) {
                wayPoints.removeAtIndex(0)
            }
        }
        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))
        }
    }

(当点击发生时 currentPosition 改变)。

虽然我认为这并不重要,但这就是我创建 SKShapeNode 线的方式:

let shapeNode = SKShapeNode()
shapeNode.path = path
shapeNode.name = "line"
shapeNode.strokeColor = UIColor.blackColor()

这有点工作,但由于某种原因,路径中似乎存在“泄漏”(不是内存)。这是上面代码的样子: http://gyazo.com/92dd84de15e125ea3d598cbfa9a86b13

如您所见,当线转弯时,它几乎形成了一个三角形。它应该只是一条两侧没有多余“质量”的线。

【问题讨论】:

  • 添加 shapeNode.fillColor = SKColor.clearColor()
  • 解决了!太感谢你了,我已经坚持了几天了!如果你愿意,你可以把它作为答案发布,我会接受它,这样你就可以获得一些额外的代表。不过,这取决于你,再次感谢你!

标签: ios swift sprite-kit skshapenode


【解决方案1】:

您看到的三角形是用颜色填充的线条路径。在这种情况下,黑色。要解决此问题,请将形状节点的fillColor 属性设置为不可见的颜色

shapeNode.fillColor = SKColor.clearColor()

我在这里使用SKColor 而不是UIColor,因为前者无需修改即可在 Mac OS X 和 iOS 应用程序中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 2012-04-20
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多