[英]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.