【发布时间】:2015-10-25 12:28:28
【问题描述】:
我试图将所有设置函数放在一个名为 Setup 的单独类中,如下所示:
class Setup {
var scene: GameScene!
init(scene: GameScene){
self.scene = scene
}
func setupBackground(bg1: SKSpriteNode, bg2: SKSpriteNode) {
bg1.anchorPoint = CGPointZero
bg1.position = CGPointMake(0, 0)
bg1.size = CGSize(width: scene.size.width, height: scene.size.height)
scene.addChild(bg1)
bg2.anchorPoint = CGPointZero
bg2.position = CGPointMake(0, bg1.size.height + 1)
bg2.size = CGSize(width: scene.size.width, height: scene.size.height)
scene.addChild(bg2)
}
}
然后像这样在 GameScene 中调用它:
class GameScene: SKScene, SKPhysicsContactDelegate {
var bg1 = SKSpriteNode(imageNamed: "lightSky")
var bg2 = SKSpriteNode(imageNamed: "lightSky")
var setup = Setup(self)
override func didMoveToView(view: SKView) {
self.size = view.bounds.size
physicsWorld.gravity = CGVectorMake(0, -1.0)
physicsWorld.contactDelegate = self
setup.setupBackground(bg1, bg2: bg2)
}
}
但我得到一个错误:
无法使用类型为“(NSObject -> () -> GameScene)”的参数列表调用类型“Setup”的初始化程序
所以我猜测场景参数的类型是错误的,但不知道哪个是正确的。
【问题讨论】:
-
在
GameScene中的哪里创建setup变量?请说明它是如何初始化的。 -
它现在可以工作了,多亏了你:) 问题是我在创建 GameScene 后直接为 GameScene 调用 self。我将用更正的代码回答这个问题,以防以后有人想知道如何解决它。