2016-07-22 15 views
1

Ich mache ein einfaches SpriteKit-Spiel mit zwei Szenen, und ich möchte, dass die Hintergrundmusik bedingungslos durch beide Szenen läuft. Gerade jetzt, ich bin mitSpriteKit Hintergrundmusik nicht für immer loopen

if soundIsPlaying == false { 
    runAction(SKAction.repeatActionForever(backgroundMusicEffect), withKey: "backgroundMusic") 
    soundIsPlaying = true 
} 

in meinem Menü Szene, in der backgroundMusicEffect ist eine globale Variable

let backgroundMusicEffect = SKAction.playSoundFileNamed("content/divertimentoK131.mp3", waitForCompletion: true) 

Wenn ich mein Spiel zu spielen, die Musik nie Schleifen. Es stoppt immer nach einem Spiel. Wenn ich die if-else-Anweisung entferne, spielt die Musik jedes Mal, wenn ich das Menü erneut betrete, über sich selbst.

Gibt es eine bessere Möglichkeit, Hintergrundmusik zu spielen? Was mache ich falsch?

+0

Sieh diese Antwort hier: http://Stackoverflow.com/a/38486792/1894067 –

Antwort

1

Ich glaube, dass die Art, wie Sie es tun, nach dem ersten Mal Schleifen, jede Iteration nach ist "abgeschlossen", da der Ton fertig ist. Sie müssten jedes Mal eine neue SKAction-Instanz erstellen, wenn Sie diese in eine Schleife bringen möchten.

Das ist natürlich eine schlechte Idee, da playSoundFileNamed entworfen ist, um nur einmal eine Sounddatei mit so wenig Overhead wie möglich zu spielen.

Wie @Alessandro Omano kommentiert hat, verwenden Sie SKAudioNode, um Sound in einer Schleife zu spielen. Dies ist meine bevorzugte Vorgehensweise, aber Sie beschränken sich auf> = iOS 9 Benutzer.

Wenn Sie iOS 8 Benutzer unterstützen müssen (an dieser Stelle würde ich sagen, warum stören), dann müssen Sie in die AVFoundation Abschnitte der Bibliotheken gehen, um Audio zu gehen, oder verwenden Sie OpenAL.

+0

danke, ich habe mit dem SKAudioNode folgenden @ alessandro-Ornano's Guide hinzugefügt, aber jetzt stürzt die Musik nach einer Sekunde ab spielen .. gibt es einen Weg, dies zu vermeiden? (es konnte auch nicht von Szene zu Szene übertragen werden) –

+0

Wenn Sie von Szene zu Szene übertragen möchten, müssen Sie den AudioNode auf die neue Szene übertragen. Wie für den Absturz, würde mehr Informationen benötigen, ich bin nicht sicher, was @ Alessandro Omano's Guide tut, so kann ich nicht helfen in dieser Hinsicht .. – Knight0fDragon