1
我試圖播放背景音,只能在一個場景中播放。當這個場景被破壞時,聲音應該淡出然後停止。然後當場景重新創建時,聲音應該再次開始播放。Corona:重新創建場景後音頻不會再次播放
這裏就是我想:
local backgroundMusic
local backgroundMusicChannel
local function stopSound(event)
audio.stop(event.channel)
audio.dispose(event.handle)
backgroundMusic = nil
end
function scene:create(event)
backgroundMusic = audio.loadSound("music/intro.mp3")
backgroundMusicChannel = audio.play(backgroundMusic, {loops = -1, fadein = 3000, onComplete = stopSound})
end
function scene:destroy(event)
audio.fadeOut({channel = backgroundMusicChannel, time=2000})
end
最初創建時的情景播放聲音,並正確地淡出,但再次被創建時的情景不會再次啓動。
當我改變摧毀功能:
function scene:destroy(event)
audio.fadeOut({channel = backgroundMusicChannel, time=2000})
audio.stop(backgroundMusicChannel)
end
聲音不淡出,因爲它會立即停止,但它並重新正確啓動創建場景下一次。
我也嘗試過使用audio.stopWithDelay,它可以正確淡出,但是類似地,當場景再次創建時不會再次開始播放。
如果有人對這裏發生的事情有任何見解,請讓我知道!
感謝您的答覆,但我停止音頻和它處置。這就是「stopSound」功能發生的事情 - 它在音頻通道的onComplete中被調用。我已驗證此函數正在被調用。我也曾嘗試使用loadStream,結果沒有任何不同。 – Sarah
函數在新場景加載之前還是之後調用? – EinsteinK
之後,因爲它在fadeOut的末尾。 – Sarah