Как пользователь прослеживает вдоль линии, путь 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
однако, когда пользователь трассировки линии, предыдущие сегменты мерцать с треугольниками отсутствует, будучи обращено на экран, например, так:
Изображения выше от простой 3x3 плитки сетки позволяет пользователю проследить простую прямую линию:
Вот более сложный пример, где линия начинается в левом нижнем углу и заканчивается в правом верхнем углу:
Что может быть причиной эти артефакты?
редактировать в то время как я нашел решения этого вопрос, я бы до сих пор приветствую какие-либо объяснения, почему исходный код не работает, а новый код делает.
SKShapeNode - это плохо реализованная, наполовину готовая, WIP, обертка вокруг CAShapeLayer (я думаю), которая непоколебима, неизменна, негибкая, неодушевленная и не стоит вашего времени. Нарисуйте эти сегменты линии с помощью растянутых и перекошенных SKSpriteNodes. Вы также получите лучшую производительность при анимации. Первоначальная цель SKShapeNode заключалась в том, что он используется как инструмент рисования отладки физики, только для физических фигур .... Только в iOS 10 они получили схему, чтобы сделать ее исполнительским образом, если она не изменилась и не обработана как текстура. Он может быть закончен в iOS 16. – Confused