web-dev-qa-db-ja.com

Swiftを使用してSKSpriteNodeサブクラスを作成します

私は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

どうすれば修正できますか?

23
Potter

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が必要とするinitNSCoderも追加しました。

45
Mike S