2016-10-10 74 views
0

我想从教程中创建一个简单的游戏,但代码似乎没有工作,所以我认为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类和报告错误的实例(标记为*>):无法调用初始化为“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 
} 

显然参数类型初始化的被拒绝,但一切似乎好的。

任何想法?

非常感谢。 Kw

回答

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 
} 

如果这不是你想要的,你能解释一下为什么你尝试有后{}的init-ING BallScene

+0

谢谢,非常有帮助。 – Kwangle

相关问题