我正在尝试从教程创建一个简单的游戏,但代码似乎不起作用,所以我认为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的参数类型被拒绝,但一切似乎都没问题。
有什么想法吗?
非常感谢。 千瓦
答案 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
?