无法使用重写 init 方法调用类



我试图从教程中创建一个简单的游戏,但代码似乎不工作,所以我认为Swift本身已经改变了,因为它是写的。我使用XCode 7.3.1与Swift 2.2。

我正在创建一个新的类,从SKScene继承和覆盖原来的init方法:

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

GameViewController类未能创建BallScene类的实例并报告错误(标记*>):不能调用初始化器'BallScene'与类型的参数列表'(size: CGSize, () -> ())'

import UIKit
import SpriteKit
    class GameViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
      *>      let scene = BallScene(size: view.bounds.size) {
                // Configure the view.
                let skView = self.view as! SKView
                skView.showsFPS = true
                skView.showsNodeCount = true
                skView.ignoresSiblingOrder = true
      *>         scene.scaleMode = .AspectFill
      *>         skView.presentScene(scene)
            }
        }
//more code
}

显然,init的参数类型被拒绝了,但似乎一切正常。

任何想法?

多谢。千瓦

不太确定你在做什么。为什么在启动BallScene之后有一个{}括号。我尝试你的代码,删除{}工作。

class GameViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let scene = BallScene(size: view.bounds.size)
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true
        skView.ignoresSiblingOrder = true
        scene.scaleMode = .aspectFill
        skView.presentScene(scene)
    }
//more code
}

如果这不是你想要的,你能解释一下为什么你在初始化BallScene之后尝试有一个{}吗?

相关内容

  • 没有找到相关文章

最新更新