2016-12-21 2 views
2

Код кода внутри действия SKAction.run по какой-либо причине не выполняется.Код внутри действия запуска SKAction не выполняется

Чтобы уточнить, это две строки внутри startAction, которые никогда не запускаются по какой-либо причине, даже если другие строки работают.

Установка точек останова на этих линиях доказывает, что эти строки никогда не выполняются.

Любая подсказка почему?

// Set first frame 
    let firstFrame = frames[0] 
    let animationNode = SKSpriteNode(texture: firstFrame) 
    animationNode.position = CGPoint(x: x, y: y) 

    // Set start action 
    let startAction = SKAction.run({ 
     gAudio.playSound(file: .TestSound) // Never runs 
     self.animationLayer.addChild(animationNode) // Never runs 
    }) 

    // Set rest of animation 
    let timePerFrame = 0.5 
    let animationAction = SKAction.animate(with: frames, timePerFrame: timePerFrame, resize: false, restore: true) 
    let removeAction = SKAction.removeFromParent() 
    let animationSequence = SKAction.sequence([startAction, animationAction, removeAction]) 

    // Run animation 
    animationNode.run(animationSequence) 
+1

бежать немедленно, но блок будет идти в очередь и не гарантируется стрелять точно в перспективе времени называется, поэтому, как только вы его запустите, следующая последовательность будет срабатывать, тем самым удаляя узел из родителя, прежде чем что-либо в перспективе может произойти. – Knight0fDragon

+0

@ Knight0fDragon благодарит так много, почему бы не опубликовать в качестве ответа? это, кажется, объясняет проблему, нет? – Crashalot

+0

, только если анимация не работает либо – Knight0fDragon

ответ

2

действия не будет срабатывать для узла до тех пор, пока не будет размещен на сцене, у вас есть курица и яйцо дилемма здесь происходит. Вы хотите добавить узел (яйцо) в сцену (курица) после того, как узел (яйцо) существует в мире (курица рожает одно и то же яйцо). У вас должно быть что-то еще, чтобы разместить узел на сцене, тогда узел сможет выполнить действия.

Поместите начала действия на сцене, а не ваш узел, и он должен начать работать

+0

Еще раз спасибо! Фактически, часть вашего объяснения, которая казалась наиболее проницательной, была немного о временных действиях и о том, как гарантировать последовательность действий, связанных с действием «запустить». Хотите включить этот бит? – Crashalot

+1

нет, потому что это не относится к вашей проблеме и только смутит людей – Knight0fDragon

+0

OK, еще раз спасибо! – Crashalot

Смежные вопросы