Der Code Block in einer SKAction.run
Aktion wird aus irgendeinem Grund nie ausgeführt.Code innerhalb von SKAction run Aktion nicht ausgeführt
Um zu verdeutlichen, sind es die zwei Zeilen innerhalb startAction
, die nie aus irgendeinem Grund ausgeführt werden, obwohl die anderen Zeilen ausgeführt werden.
Das Setzen von Haltepunkten in diese Zeilen beweist, dass diese Zeilen niemals ausgeführt werden.
Irgendwelche Anhaltspunkte warum?
// 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)
Lauf starten ist unmittelbar, aber der Block auf eine Warteschlange gehen und nicht in exaktem Zeitlauf genannt wird Feuer garantiert, Sobald sie ausgelöst wird, wird die nächste Sequenz ausgelöst, wodurch der Knoten vom Elternknoten entfernt wird, bevor irgendetwas im Lauf passieren kann. – Knight0fDragon
@ Knight0fDragon Vielen Dank, warum nicht als Antwort posten? Das scheint das Problem zu erklären, oder? – Crashalot
nur wenn die Animation nicht ausgeführt wird – Knight0fDragon