我正在使用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代码并将其转换为快速的代码。
最佳答案
我自己将抗锯齿设置为false来解决此问题。尽管作为一个友好的说明,万一其他人遇到此问题,即使将抗锯齿设置为false,随机行仍会出现在模拟器上,但是在实际设备上运行时,它仍然可以正常工作。我猜这只是模拟器如何渲染形状的错误。
关于ios - SKShapeNode行中出现白线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30958104/