我试图从教程中创建一个简单的游戏,但代码似乎不工作,所以我认为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
之后尝试有一个{}
吗?