我正在制作各种状态和状态之间动画的复杂按钮,并循环“吸引”动画。由于阴影,高光,发光和内部视觉变化的性质,按钮非常复杂。
每个按钮都有几个用于绘图和动画的SKSpriteNodes,多个SKLabelNodes和多个SKEffectNodes,以及基于自我状态和其他状态在状态之间转换的动作,以及自我触摸事件。
目前,这些按钮是从SKSpriteNode子类构建和实例化的。
但是我觉得我可能会做这个“错误”,而且我应该改为继承SKNode。
在上述情况下,将元素堆叠到SKNode与SKSpriteNode的子类中有什么优缺点?
答案 0 :(得分:2)
根据SKNode
定义:
SKNode类不会执行任何自己的绘图。
我完全同意认为使用SKSpriteNode
作为按钮的子类更好,因为自定义按钮的init方法可能也有很大的优势,这在使用期间变得非常舒适创建一个按钮。
我写了几个代码来做一个例子:
class CoolButton: SKSpriteNode {
var isEnabled: Bool = true {
didSet {
if (disabledTexture != nil) {
texture = isEnabled ? defaultTexture : disabledTexture
}
}
}
var isSelected: Bool = false {
didSet {
texture = isSelected ? selectedTexture : defaultTexture
}
}
init(normalTexture defaultTexture: SKTexture!, selectedTexture:SKTexture!, disabledTexture: SKTexture?, size:CGSize) {
...
super.init(texture: defaultTexture, color: UIColor.white, size: size)
...
}
...
}
我认为没有任何缺点,因为SKSpriteNode
直接从SKNode
继承。
将{@ 1}}或其他SKLabelNode