【发布时间】:2015-06-20 19:36:04
【问题描述】:
我正在使用 SKShapeNodes 绘制一条线。这条线一直在“增长”,或者一直在向上移动。当用户在屏幕上点击时,线条应该以 45 度角改变方向,向右或向左。它会这样做,但是由于某种原因,当它改变方向时,随机的白线会出现在线条中。它们看起来像这样:
那些白线不应该在那里,我不知道是什么原因造成的。 我正在使用以下代码创建该行: 每 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 代码并自己将其转换为 swift。
【问题讨论】:
标签: ios swift sprite-kit skshapenode