Xcode 使用GameSecene作为参数将其传递给另一个类-Swift2
我试图将所有设置函数都放在一个名为setup的单独类中,如下所示:Xcode 使用GameSecene作为参数将其传递给另一个类-Swift2,xcode,swift,swift2,xcode7,Xcode,Swift,Swift2,Xcode7,我试图将所有设置函数都放在一个名为setup的单独类中,如下所示: class Setup { var scene: GameScene! init(scene: GameScene){ self.scene = scene } func setupBackground(bg1: SKSpriteNode, bg2: SKSpriteNode) { bg1.anchorPoint = CGPointZero bg
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)
}
}
然后在游戏场景中这样称呼它:
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)
}
}
class GameScene: SKScene, SKPhysicsContactDelegate {
var bg1 = SKSpriteNode(imageNamed: "lightSky")
var bg2 = SKSpriteNode(imageNamed: "lightSky")
var setup: Setup!
override func didMoveToView(view: SKView) {
self.size = view.bounds.size
physicsWorld.gravity = CGVectorMake(0, -1.0)
physicsWorld.contactDelegate = self
setup = Setup(scene: self)
setup.setupBackground(bg1, bg2: bg2)
}
}
但是我得到了一个错误:
无法使用类型为“(NSObject->()->GameSecene)”的参数列表调用类型“Setup”的初始值设定项
因此,我猜测场景参数的类型是错误的,但不知道哪一个是正确的。它的初始化方式如下:
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)
}
}
class GameScene: SKScene, SKPhysicsContactDelegate {
var bg1 = SKSpriteNode(imageNamed: "lightSky")
var bg2 = SKSpriteNode(imageNamed: "lightSky")
var setup: Setup!
override func didMoveToView(view: SKView) {
self.size = view.bounds.size
physicsWorld.gravity = CGVectorMake(0, -1.0)
physicsWorld.contactDelegate = self
setup = Setup(scene: self)
setup.setupBackground(bg1, bg2: bg2)
}
}
在
游戏场景
中,在哪里创建设置
变量?请展示它是如何初始化的。它现在可以工作了,多亏了你:)事情是我在创建GameSecene后直接给self打电话请求GameSecene。我将用正确的代码回答这个问题,以防以后有人想知道如何解决它。