【发布时间】: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