Сбой приложения при загрузке пользовательского класса SKSpriteNode в SKScene - PullRequest
0 голосов
/ 29 июня 2018

Я создаю SKSpriteNode программно с собственным классом SKSpriteNode. Мне интересно, как я могу добавить этот SKSpriteNode на сцену. Мое приложение продолжает падать, когда я пытаюсь добавить addChild () в функцию didMove () моего класса сцены.

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

1 Ответ

0 голосов
/ 29 июня 2018

вы на самом деле ничего не создаете.

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