2016-02-02 22 views
1

我試圖在swift中創建一個類型爲sknode的類,它也將包含一個保存位置的參數。我不斷收到一個錯誤,試圖創建一個類,聲明「初始化程序不會從它的超類中重寫指定的初始化程序」我不確定我做錯了什麼,或者該類應該如何創建。在swift中創建一個類型的SKNode

import Foundation 

import SpriteKit 
class hud:SKNode { 

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

    override init(position:CGPoint){ 

    } 
} 

回答

2

你所得到的"initializer does not override a designated initializer from its super class"錯誤,因爲您已標記您的init(位置:CGPoint)初始化爲覆蓋。 SKNode沒有這樣的初始化器,所以沒有什麼可以重載。

簡單地刪除覆蓋將消除錯誤,你的Hud類將有一個初始化程序以CGPoint作爲參數。

init(position: CGPoint) {...}

值得一提的是,SKNode已經有一個名爲類型CGPoint的位置屬性,所以它可能是SKNode已經有了你之後的能力。否則,您可能會想要調用您的財產(例如myPosition)以避免與現有財產衝突。

+0

但後來我得到另一個錯誤說Super.init當我刪除的超越控制的事情回到初始化前心不是叫 – user302692

+0

沒關係只是想出來 – user302692

+0

感謝幫忙,真的很感謝 – user302692

1

刪除override關鍵字,不要忘記打電話給原來的初始化在init方法:

class hud:SKNode { 

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

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

嘿,我也有另一個問題,如果你可以回答關於在主要方法實例化hud類,併爲班級添加精靈。繼承人的問題的鏈接http://stackoverflow.com/questions/35237669/sknode-cant-see-added-children – user302692