Странное поведение SKAction на детей - PullRequest
0 голосов
/ 22 марта 2020

Итак, моя цель - извлечь содержимое SKScene и затем выполнить некоторые действия для их узла:

func loadSceneNodes() {
    let loadedScene = SKScene(fileNamed: "newScene.sks")

    // Reads the content of the "Content" node in the newScene.sks
    let content = loadedScene!.childNode(withName: "Content") as! SKSpritenode

    // I move the content to self
    // (THANKS Knight0fDragon for suggestion)
    content.move(toParent: self)

    // Forces the unpause
    self.isPause = false

    // Try to run a test action on the node
    content.run(.rotate(byAngle: 90, duration: 2.0)) {
        print("DONE")
    }

    print(content.hasActions()) // DEBUG -> it prints TRUE
}

Что происходит, когда я успешно читаю содержимое, и оно отображается на сцене , но действия не отображаются, даже если hasActions() результаты true.

Я обнаружил кое-что очень интересное, поиграв с точками останова и консолью отладки. content.hasActions() возвращает true, потому что все SKActions попадают в стек:

enter image description here

Они кажутся замороженными, потому что если я назначу больше действий , они получат стопку в куче один за другим, не разбегаясь. Только , как только я выйду из точки останова (или если я приостановлю и затем воспроизведу приложение через xCode), все выполнится. Как приложение «нуждается» в refre sh.

1 Ответ

0 голосов
/ 23 марта 2020

Используйте moveToParent на своем узле вместо addChild на родительском узле, чтобы избежать необходимости создавать копию.

Убедитесь, что для состояния isPaused установлено значение false, возможно, вы копируете на время, когда это правда

...