下面的代码用SKShapeNode实现了一个循环计时器,随着时间的流逝,其中的一小片圆圈消失了。
不幸的是,由于SKShapeNode的限制,计时器很模糊。
Answers like this并未解决该问题,并且该问题已过时,可能不再适用。
1)有没有一种方法可以使用没有这种模糊线的SKShapeNode? p>
2)如果没有办法修复SKShapdeNode,实现类似的循环计时器的替代方法是什么?
let timer = SKShapeNode(circleOfRadius: CGFloat(50))
timer.fillColor = UIColor.red
timer.strokeColor = UIColor.clear
timer.lineWidth = 0
timer.zRotation = CGFloat.pi / 2
timer.path = self.circle(radius: CGFloat(50), percent: CGFloat(90))
fileprivate func circle(radius: CGFloat, percent: CGFloat) -> CGPath {
// Adjust <percent> if less than 0
let percent = percent < 0 ? 0 : percent
// Generate circle path
let start = CGFloat(0)
let end = CGFloat.pi * 2 * percent
let center = CGPoint.zero
let bezierPath = UIBezierPath()
bezierPath.move(to: center)
bezierPath.addArc(withCenter:center, radius: radius, startAngle: start, endAngle: end, clockwise: true)
bezierPath.addLine(to: center)
// Return path
return bezierPath.cgPath
}
答案 0 :(得分:1)
着色器可能会完成您想要的操作,请查看http://battleofbrothers.com/sirryan/understanding-shaders-in-spritekit/
此外,根据AppleDocs的建议,SKShapeNode不应该在调试之外使用,过去使用它们时遇到了一些问题。
答案 1 :(得分:1)
@ElTomato提到设置笔触颜色和线条宽度,这将有助于掩盖模糊性。
更好的解决方案可能是使用isAntialiased = false
这当然取决于您的图形偏好。