将SKShapeNode框架设置为calculateAccumutedFrame

时间:2016-11-08 02:20:55

标签: ios swift swift3 frame skshapenode

这个问题已经发生了好几天:我无法设置我需要的具体框架。我需要我的SKShapeNode框架作为圆圈周围的边界框,这样它就是框架的内切圆。

enter image description here

蓝色是当前帧,红色是我想要的帧。我正在创建这样的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才能工作,所以我可以指定框架。

有什么想法吗?

0 个答案:

没有答案