2016-10-10 10 views
0

チュートリアルから単純なゲームを作成しようとしていますが、コードが動作していないようですので、Swift自体が変更されたと仮定します。私はSwift 2.2でXCode 7.3.1を使用しています。override initメソッドでクラスを呼び出せません

私は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の引数の型、まだすべてがいるようです大丈夫ですか?

アイデア?

多くのありがとうございます。 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

関連する問題