Swift SpriteKit 初始化程序错误不断出现

Swift SpriteKit initializer errors keeps coming out

我在class里面写了一个Init,但是init里面一直报错,有3个错误: 1.需要一个override关键字; 2. required initializer必须由subclass提供; 3. 初始化器只能在一个类型内声明;

这是我的代码:

import SpriteKit


class GameScene: SKScene {
var man:SKSpriteNode
var runningManTextures = [SKTexture]()

override func didMoveToView(view: SKView) {
}


func loadMan() {
    loadManTextures()
    man.position.y -= man.size.height/2
    addChild(man)
}

func loadManTextures() {
    var runningAtlas = SKTextureAtlas(named: "man")
    for i in 1...3 {
        var textureName = "man_\(i)"
        var temp = runningAtlas.textureNamed(textureName)
        runningManTextures.append(temp)
    }
}

init(size:CGSize){

    super.init(size: size)
}


override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
    }
}


override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
}

}

此代码在 Swift 中是非法的:

class GameScene: SKScene {
    init(size:CGSize){
        super.init(size: size)
    }
}

为了合法,这样写:

class GameScene: SKScene {
    override init(size:CGSize){
        super.init(size: size)
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

你的实际代码将仍然是非法的,因为你的init(size:)方法没有初始化你的man 属性,但解决这个问题很简单,在任何情况下都是一个不同的问题。