我有以下类是 SKLabelNode 的子类。没有
这个类将无法工作override init(){
super.init()
}
打电话。似乎 SKLabelNode 正在尝试调用不带参数的 init() 方法,或者其他原因导致此问题。
这是简化的类。
import UIKit
import SpriteKit
class PulsatingText: SKLabelNode {
override init(){
super.init()
}
init (fontNamed:String!, theText: String!, theFontSize: CGFloat!){
super.init(fontNamed: fontNamed)
self.text = theText
self.fontSize = theFontSize
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
如果我删除
override init(){
super.init()
}
我遇到运行时崩溃,控制台记录了以下错误。
fatal error :对类“MobileTutsInvaderz.PulsatingText”使用了未实现的初始化程序“init()”
这是我调用方法的方式。
let invaderText = PulsatingText(fontNamed: "ChalkDuster", theText: "INVADERZ", theFontSize:50)
我还包括下面的堆栈跟踪图像。
请您参考如下方法:
您需要初始化init() 方法。因为每次初始化 SKLabelNode 时都会调用默认的 init() 方法。您可以通过实现 override init() 并添加一个 println 语句来测试它:
override init() {
super.init()
println("test")
}
如果你现在像这样初始化一个labelnode:
var label:PulsatingText = PulsatingText(fontNamed: "Arial", theText: "hey", theFontSize: 12)
println("test") 将被调用。
