我正在尝试播放背景声音,仅在一个场景中播放。当这个场景被破坏时,声音会淡出然后停止。然后,当重新创建场景时,声音应该再次开始播放。
以下是我的尝试:
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,它正确淡出,但同样地,再次创建场景时不再开始播放。
如果有人对此处发生的事情有任何见解,请告诉我们!
答案 0 :(得分:0)
如果问题没有停止,问题是你不能(重新)播放声音吗? 当场景结束时,您也永远不会丢弃音频。 在创建内部,如果已存在,则停止上一个音频。
最好创建一次声音并在需要时重复使用它。 如果你使用loadStream,你必须在播放后使用audio.rewind()。
关于此的文档还指出您应该使用loadStream: https://docs.coronalabs.com/guide/media/audioSystem/index.html