作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要创建一个从屏幕中间开始的半径很小的圆,它从中心逐渐变大。如果圆圈是 SKSpriteNode ,有什么办法可以做到这一点吗?想法是增加半径,而不增加行程等其他特性。
到目前为止:
func randomCircle(){
let RandomCircleShape = SKShapeNode(circleOfRadius: 1)
RandomCircleShape.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
RandomCircleShape.strokeColor = randomColor()
RandomCircleShape.lineWidth = 2
self.addChild(RandomCircleShape)
}
最佳答案
这是实现扩大圆并保持其线宽的一种方法。向您的函数添加一个半径参数并让它返回一个 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:
关于ios - 如何在 Swift 中更改 SKSpriteNode 的半径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293764/
我是一名优秀的程序员,十分优秀!