【问题标题】:Adding nodes to GameScene from another class从另一个类向 GameScene 添加节点
【发布时间】:2018-05-13 11:27:56
【问题描述】:

我这里有一个结构,用于将一个函数传递给 GameScene,我可以在需要时调用它。

问题是GameScene.addChild(explosionFirst)这行产生如下错误:

“SKSpriteNode”不能转换为“GameScene”

如何将另一个类中的节点添加到 GameScene?

import Foundation
import SpriteKit

struct Explosion {

    var explosions = [SKTexture]()

    mutating func spawnExplosion(spawnPosition: CGPoint) {

        for i in 0...79 {
            let explosion = SKTexture(imageNamed: String(i))
            explosions.append(explosion)
        }

        let explosionFirst = SKSpriteNode(texture: explosions[0])
        explosionFirst.position = spawnPosition
        explosionFirst.zPosition = 1
        explosionFirst.setScale(5)

        GameScene.addChild(explosionFirst)

        let animation = SKAction.animate(with: explosions, timePerFrame: 0.1)

        let scaleIn = SKAction.scale(to: 10, duration: 2.3)
        let fadeOut = SKAction.fadeOut(withDuration: 1.0)
        let delete = SKAction.removeFromParent()

        let explosionSequence = SKAction.sequence([scaleIn, fadeOut, delete])

        explosionFirst.run(animation)
        explosionFirst.run(explosionSequence)
    }
}

【问题讨论】:

  • 您的GameScene 是否有Explosion 类型的属性?
  • GameScene 是什么?我假设它是你的 SKScene 类。这不是您的GameScene 实例,这意味着addChild 不是您想要调用的正确addChild,必须调用GameScene.addChild(gameSceneInstance,explosionFirst),但当然,您需要知道gameSceneInstance 是什么是,并且会打电话给gameSceneInstance.addChild(explosionFirst)
  • 你说得对,我的 GameScene 是我的 SKScene 类。如何创建 gameSceneInstance?
  • @Knight0fDragon 好的,我通过 var game: GameScene! 创建了一个实例,然后通过 GameScene.addChild(explosionFirst) 添加节点。感谢您的帮助。
  • 'GameScene' 是一个类。您不能将节点添加到类中。不过,您可以将节点添加到“GameScene”的实例中。

标签: ios swift class struct sprite-kit


【解决方案1】:

编译器看到 self.GameScene.addChild 并且你没有对 GameScene 对象的引用,所以创建一个

var gameScene : GameScene!

现在使用:

gameScene.addChild(explosionFirst)

注意:默认情况下,您的初始化程序现在将具有 gameScene: GameScene,因此您必须注入 Gamescene 依赖于 init

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多