【问题标题】:Swift SpriteKit initializer errors keeps coming outSwift SpriteKit 初始化程序错误不断出现
【发布时间】:2015-04-08 10:20:16
【问题描述】:

我在课堂上写了一个初始化,但是初始化中不断出现错误,有三个错误: 1.需要一个覆盖关键字; 2.必需的初始化器必须由子类提供; 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 */
}

}

【问题讨论】:

  • 我已经向您展示了如何修复错误,但实际上您不应该将 Stack Overflow 带宽浪费在此类基本内容上。相反,在尝试使用 Swift 之前先学习它。

标签: swift sprite-kit


【解决方案1】:

这段代码在 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 属性,但修复它是微不足道的并且是另一个问题无论如何。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2023-04-10
    • 2017-01-15
    相关资源
    最近更新 更多