【问题标题】:using GameScene as a parameter for passing it to a different class - Swift2使用 GameScene 作为参数将其传递给不同的类 - Swift2
【发布时间】: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。我将用更正的代码回答这个问题,以防以后有人想知道如何解决它。

标签: xcode swift swift2 xcode7


【解决方案1】:

它可以像这样初始化它:

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)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多