私はSKSpriteNodeのサブクラスであるクラスを作成しようとしています。それに、他のプロパティと関数を追加したいと思います。しかし、最初のステップでエラーに直面しました。これが私のコードです:
_import SpriteKit
class Ball: SKSpriteNode {
init() {
super.init(imageNamed: "ball")
}
}
_
これはコンパイルエラーではなく、実行時エラーです。それは言う:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
とfatal error: use of unimplemented initializer 'init(texture:)' for class Project.Ball
。
どうすれば修正できますか?
SKSpriteNode
の指定された初期化子を呼び出す必要があります。 SKSpriteNode
が完全に実装されていないという別のエラーが発生しなかったのには本当に驚いています。古いXcode6ベータ版を使用していますか?
指定された初期化子を使用する必要があるため、super.init(texture: '', color: '', size: '')
を呼び出す必要があります。
これは次のようなものです。
class Ball: SKSpriteNode {
init() {
let texture = SKTexture(imageNamed: "ball")
super.init(texture: texture, color: nil, size: texture.size())
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
注:Xcodeが必要とするinit
のNSCoder
も追加しました。