當用戶沿着一條線跡線時,一條SKShapeNode
路徑由線段(來自底層的「貼圖」)構建。爲什麼SKShapeNode撕裂?
var activatedPointPath: UIBezierPath {
let activatedPointPath = UIBezierPath()
// self.state.activatedPoints contains the end point
// of each full line segment the user has traced through
if let firstActivatedPoint = self.state.activatedPoints.first {
activatedPointPath.move(to: firstActivatedPoint)
for activatedPoint in self.state.activatedPoints {
activatedPointPath.addLine(to: activatedPoint)
}
// self.state.endOfLine contains the last point the user
// has touched, which may or may not be at the end of a line
// segment
if let lastPoint = self.state.endOfLine {
activatedPointPath.addLine(to: lastPoint)
}
}
return activatedPointPath
}
然後這被分配到:實際的路徑是通過線鎖定用戶以前已經拖了過來,並找到在最接近線上的最近點到最新觸碰點,然後建立一個路徑,像這樣建所述SKShapeNode爲:
self.lineNode.path = self.activatedPointPath.cgPath
然而,當用戶正在跟蹤線,先前的段閃爍與同時被繪製到屏幕上,像這樣的三角形丟失:
的圖像是從一個簡單的3×3塊網格允許用戶跟蹤一個簡單的直線:
下面是一個更復雜的例子,其中該行開始上左下方和右上方結束:
什麼引起這些神器?
編輯,而我已經找到一個解決這個問題,我還是歡迎的原因,原來的代碼沒有工作,新的代碼做任何解釋。
SKShapeNode是CAShapeLayer(我認爲),它是一個執行力差,半成品,WIP,包裝難以克服,不可變,不靈活,無生命,不值得花費時間的包裝。用拉伸和傾斜的SKSpriteNodes繪製這些線段。動畫時也會獲得更好的效果。 SKShapeNode的最初目的是將其用作物理調試繪圖工具,僅用於物理形狀...。只有在iOS 10中,他們才能夠以高性能的方式繪製輪廓,如果它沒有改變並且像紋理一樣對待。它可能在iOS 16中完成。 – Confused