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