在swift中创建一个类型为SKNode的类

时间:2016-02-02 04:40:55

标签: sprite-kit swift2

我试图在swift中创建一个类型为sknode的类,它也包含一个持有位置的参数。我一直在尝试创建一个错误,并且#34;初始化程序没有覆盖超级类的指定初始化程序"我不确定我做错了什么,或者应该如何创建这个类。

import Foundation

import SpriteKit
class hud:SKNode {

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override init(position:CGPoint){

    }
}

2 个答案:

答案 0 :(得分:2)

您收到"initializer does not override a designated initializer from its super class"错误,因为您已将init(position:CGPoint)初始化程序标记为覆盖。 SKNode没有这样的初始化程序,所以没有什么可以覆盖。

简单地删除覆盖将消除错误,并且您的Hud类将有一个初始化器将CGPoint作为参数。

init(position: CGPoint) {...}

值得注意的是,SKNode已经有一个名为CGPoint类型的属性,因此SKNode可能已经拥有了你所追求的功能。否则,您可能希望将您的财产称为其他内容(例如myPosition)以避免与现有属性发生冲突。

答案 1 :(得分:1)

删除override关键字,不要忘记在init方法中调用原始初始值设定项:

class hud:SKNode {

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    init(position:CGPoint){
        super.init()
    }
}