2016-07-22 41 views
1

我正在製作一個簡單的帶有兩個場景的SpriteKit遊戲,並且我希望背景音樂無條件循環播放兩個場景。現在,我在我的菜單場景中使用SpriteKit背景音樂不會永久循環

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

其中backgroundMusicEffect是一個全局變量

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

當我玩我的遊戲,音樂永遠循環。它在一場比賽後總是停止。如果我刪除了if-else語句,每當我重新進入菜單時,音樂都會自動播放。

有沒有更好的方法來播放背景音樂?我究竟做錯了什麼?

+0

看這個答案在這裏:http://stackoverflow.com/a/38486792/1894067 –

回答

1

我相信你這樣做的方式,在第一次循環之後,每次迭代之後都是「完成」,因爲聲音已經完成。如果你想讓它循環,你需要每次創建一個新的SKAction實例。

這當然是一個糟糕的主意,因爲playSoundFileNamed被設計成只能播放一次聲音文件,儘可能少的在頭上。

由於@Alessandro Omano評論說,使用SKAudioNode可以循環播放聲音。這是我首選的方式,但是你只限於> = iOS 9用戶。

如果您必須支持iOS 8用戶(此時我會說爲什麼打擾),那麼您需要查看庫的AVFoundation部分以獲取音頻或使用OpenAL。

+0

謝謝你,我已經增加了使用SKAudioNode後面@ alessandro-ornano的指南,但現在音樂崩潰後一秒玩..有沒有辦法避免這種情況? (它也沒有從一個場景到另一個場景) –

+0

如果你想要從一個場景到另一個場景,你需要將AudioNode轉移到新的場景中。至於崩潰,將需要更多的信息,我不知道@Alessandro Omano的指南是做什麼的,所以我無法在這方面提供幫助。 – Knight0fDragon