我正在使用自己的SKSpriteNode类以编程方式创建SKSpriteNode。我想知道如何将这个SKSpriteNode添加到场景中。当我尝试在我的场景类的didMove()函数中添加addChild()时,我的应用程序不断崩溃。
class ChaosScene: SKScene {
var dragonNode: Dragon!
override func didMove(to view: SKView) {
dragonNode.createDragon()
addChild(dragonNode)
}
}
class Dragon: SKSpriteNode {
var dragonNode: SKSpriteNode!
func createDragon() {
// Create Dragon
dragonNode = SKSpriteNode(imageNamed: "dragon_2_fly_001")
dragonNode.name = "dragon"
dragonNode.physicsBody = SKPhysicsBody(circleOfRadius: 50)
let actionMove = SKAction.move(
to: CGPoint(x: -1000 ,y: dragonNode.position.y),
duration: 2.0)
dragonNode.run(actionMove)
}
}
答案 0 :(得分:2)
您实际上并没有创建任何东西。
class ChaosScene: SKScene {
var dragonNode: Dragon!
override func didMove(to view: SKView) {
dragonNode = Dragon()
addChild(dragonNode)
}
}
您必须先初始化SpriteNodes,然后才能将其添加到场景中
class Dragon: SKSpriteNode {
var dragonNode: SKSpriteNode!
init() {
super.init(texture: nil, color: .clear, size: CGSize.zero)
// Create Dragon
dragonNode = SKSpriteNode(imageNamed: "dragon_2_fly_001")
dragonNode.name = "dragon"
dragonNode.physicsBody = SKPhysicsBody(circleOfRadius: 50)
addChild(dragonNode)
let actionMove = SKAction.move(to: CGPoint(x: -1000 ,y: dragonNode.position.y), duration: 2.0)
dragonNode.run(actionMove)
}
}