2015-06-20 57 views
0

我正在使用SKShapeNodes繪製一條線。這條線不斷「增長」,或總是向上移動。當用戶在屏幕上點擊時,線應該以45度角改變方向,向右或向左。它是這樣做的,但是由於某些原因,當它改變方向時,隨機白線出現在該行中。他們看起來像這樣: enter image description here出現在SKShapeNode行中的白線

那些白線不應該在那裏,我不知道是什麼導致它們。 我創建用下面的代碼行: 每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代碼,並將其轉換爲迅速自己。

回答

0

我自己通過將antialiasing設置爲false來解決這個問題。雖然作爲一個友好的注意事項,任何人都會遇到這個問題,即使將抗鋸齒設置爲false,隨機線仍然會出現在模擬器上,但是當在實際設備上運行時它會正常工作。我猜這只是模擬器渲染形狀的一個錯誤。