无法使用覆盖init方法

时间:2016-10-10 15:23:24

标签: swift xcode

我正在尝试从教程创建一个简单的游戏,但代码似乎不起作用,所以我认为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'的初始值设定项(大小: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的参数类型被拒绝,但一切似乎都没问题。

有什么想法吗?

非常感谢。 千瓦

1 个答案:

答案 0 :(得分:1)

不太清楚你在做什么。为什么在初始化{}后你有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