Skip to main content
 首页 » 数据库

swift之使用 Swift 子类化 SKLabelNode 错误

2024年01月01日92虾米哥

我有以下类是 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") 将被调用。