如何在Swift中更改SKSpriteNode的半径?

时间:2015-10-23 02:09:25

标签: ios swift skspritenode

我需要创建一个从屏幕中间开始的半径很小的圆,它从中心逐渐变长。如果圆圈是.popover('destroy'),我有什么方法可以做到这一点?想法是为了增加半径,没有其他品质,如中风增加。

到目前为止:

SKSpriteNode

1 个答案:

答案 0 :(得分:0)

这是实现保持线宽的扩展圆的一种方法。在函数中添加一个radius参数,并返回SKShapeNode。此外,将节点和半径的属性添加到GameScene类:

var randomCircle: SKShapeNode?
var currentRadius: CGFloat = 1

func makeRandomCircle(radius: CGFloat) -> SKShapeNode {
    let RandomCircleShape = SKShapeNode(circleOfRadius: radius)
    RandomCircleShape.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
    RandomCircleShape.strokeColor = UIColor.redColor()
    RandomCircleShape.lineWidth = 2
    return RandomCircleShape
}

然后通过在添加和删除主线程上的节点时更改半径来创建扩展效果:

var i = 0
while i < 300 {
    let delay = 0.001 * Double(i) * Double(NSEC_PER_SEC)
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(time, dispatch_get_main_queue()) {
        self.currentRadius += 0.25
        self.randomCircle!.removeFromParent()
        self.randomCircle = self.makeRandomCircle(self.currentRadius)
        self.addChild(self.randomCircle!)
    }
    i++
}

此代码可放置在您希望效果发生的位置。

结果的GIF:

enter image description here