繁体   English   中英

无法使用覆盖init方法调用类

[英]Can't invoke class with override init method

我正在尝试通过教程来创建一个简单的游戏,但是代码似乎无法正常工作,因此我认为自编写以来,Swift本身已经发生了变化。 我在Swift 2.2中使用XCode 7.3.1。

我正在创建一个继承自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类的实例并报告错误(标记为*>):无法为参数类型为'(size:CGSize,()->())'的'BallScene'调用初始化程序

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之后尝试使用{}吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM