这个问题已经发生了好几天:我无法设置我需要的具体框架。我需要我的SKShapeNode框架作为圆圈周围的边界框,这样它就是框架的内切圆。
蓝色是当前帧,红色是我想要的帧。我正在创建这样的SKShapeNode:
-contains
虽然框架完全错误。它是一些随机帧,你会认为它会被设置为calculateAcumulatedFrame。它甚至从哪里得到这个错误的框架......
所以我覆盖了calculateAcumulatedFrame,因为frame是一个get-only属性:
init(level: Int, from: SKSpriteNode, fromScene: GameScene) {
self.level = level
self.from = from
self.fromScene = fromScene
bezierPath = UIBezierPath(arcCenter: CGPoint.zero, radius: CGFloat(((25 * level)) + 50), startAngle: CGFloat(GLKMathDegreesToRadians(-50)), endAngle: CGFloat(M_PI * 2), clockwise: false)
let top = CGFloat((level * 25) + 50)
let bottom = CGFloat((level + 1) * 25 + 50)
scale = top / bottom
finalLineWidth = (initialLineWidth / scale)
super.init()
self.path = bezierPath.cgPath
self.strokeColor = UIColor(red:0.98, green:0.99, blue:0.99, alpha:1.00)
self.lineWidth = initialLineWidth
}
然后返回图片中红色部分显示的CGRect。
如何将calculateAccumulatedFrame应用于框架?我没有做任何更新帧计算AccumulatedFrame。如果不对,那我怎么设置框架呢?
xScale和yScale根本不起作用。并且通过使用它,SKShapeNode的线宽被缩小或放大并且完全错误。我需要calculateAccumulatedFrame才能工作,所以我可以指定框架。
有什么想法吗?