SKShapeNode有哪些常见用法
时间: 2025-07-29 12:27:49
(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)
SKShapeNode 是 SpriteKit 中用于绘制矢量图形的核心类,以下是其常见用法及关键特性:
1. 基础图形绘制
圆形:通过 circleOfRadius 初始化,指定半径和颜色。
swift
Copy Code
let circle = SKShapeNode(circleOfRadius: 30)
circle.fillColor = .blue
circle.strokeColor = .white
矩形:使用 rectOf 或 rect:cornerRadius 创建,支持圆角。
swift
Copy Code
let rect = SKShapeNode(rectOf: CGSize(width: 100, height: 50))
rect.fillColor = .green
2. 自定义路径(CGPath)
自由形状:通过 CGMutablePath 定义任意路径,如直线、多边形等。
swift
Copy Code
let path = CGMutablePath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 100, y: 100))
let customShape = SKShapeNode(path: path)
customShape.strokeColor = .red
3. 动态修改属性
颜色与线条:
fillColor:设置填充色(透明需用 clear)。
strokeColor 和 lineWidth:控制边框颜色和粗细。
路径更新:实时修改 path 属性可实现动态图形(如绘制轨迹)。
4. 特效与交互
发光效果:通过 glowWidth 添加路径发光。
交互响应:结合 touchesBegan 等方法实现点击或拖拽。
5. 性能优化建议
简单图形优先:复杂路径或高频更新可能影响性能,推荐静态图形使用 SKSpriteNode。
复用节点:避免频繁创建/销毁,可隐藏或复用现有节点。
示例:随机颜色圆形
swift
Copy Code
class RandomCircle: SKShapeNode {
override init() {
super.init(circleOfRadius: 20)
self.fillColor = UIColor(
red: CGFloat.random(in: 0...1),
green: CGFloat.random(in: 0...1),
blue: CGFloat.random(in: 0...1),
alpha: 1
)
}
required init?(coder aDecoder: NSCoder) { nil }
}
适用场景
调试辅助:绘制碰撞边界或坐标轴。
动态特效:如闪电、能量波等实时生成的图形。
UI元素:简单的按钮、进度条等。
通过灵活组合路径与属性,SKShapeNode 可实现丰富的矢量图形效果,但需注意性能权衡。