【问题标题】:SpriteKit: Add SKSpriteNodes To The ViewSpriteKit:将 SKSpriteNodes 添加到视图
【发布时间】:2015-11-06 20:22:36
【问题描述】:

我基本上想在屏幕上添加一个 SKSpriteNode,但我不知道错误在哪里。所以我包括了我的三个班级参与这个问题的照片。我为所有背景内容创建了一个类。在那里,我使用函数addChild() 将我的 56 个节点添加到视图中,但它们没有出现在屏幕上。理论上(对我来说)一切都应该工作。

希望您能帮我将节点添加到屏幕上!

编辑:更新了图片。

【问题讨论】:

    标签: swift view sprite-kit skspritenode skscene


    【解决方案1】:

    当你调用它时:

    GameScene().addChild(image)
    

    您每次在for 中创建本地GameScene 对象,将image 添加到该对象,当您移动到循环的下一次迭代时,该对象被销毁。事实上,在你的循环之后,没有一个 GameScene 对象。

    其次,您不需要在您的hintergrund 对象中使用var image = SKSpriteNode()。您每次都将此引用设置为新对象。

    你在代码中有交叉引用,试着做这样的事情:

    class GameScene: SKScene {
        ...
        override func didMoveToView(view: UIView) {
            hintergrund.setBackgroundForScene(self, width: screenWidht)
        }
    }
    
    class hintergrund {
        ...
        class func setBackgroundForScene(gameScene: GameScene, width: CGFloat) {
            ...
            for (...) {
                ...
                gameScene.addChild(image)
            }
        }
    }
    

    【讨论】:

    • 您的解释很有道理,我将更改应用于我的代码。可惜还是不行。
    • @LukasKöhl 你犯了一个类似的错误,并在这一行 hintergrund.setupBackground(screenWidth) 中创建 hintergrund 对象。这行代码中创建的对象会在didMoveToView方法结束后被删除
    • 当我对 let background = hintergrund()background.setupBackground(screenWidth) 做同样的事情时,我对我不起作用。我收到 EXC_BAD_ACCESS 错误。在我写的代码的第一部分。
    • @LukasKöhl 你对对象之间的交互都非常不好,我已经编辑了答案,看看它
    • @LukasKöhl 下次不加截图,加个打印代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多