我正在尝试仅在一个场景中播放背景声音。销毁该场景后,声音应消失并停止。然后,当重新创建场景时,声音应重新开始播放。
这是我正在尝试的:
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
声音在最初创建场景时播放,并正确淡出,但在再次创建场景时不会再次开始。
当我将destroy函数更改为:
function scene:destroy(event)
audio.fadeOut({channel = backgroundMusicChannel, time=2000})
audio.stop(backgroundMusicChannel)
end
声音不会消失,因为它会立即停止,但是在下一次创建场景时它会再次正确开始。
我也尝试过使用audio.stopWithDelay,它可以正确淡出,但是类似地,当再次创建场景时,它不会再次开始播放。
如果有人对这里发生的事情有任何见解,请告诉我!
最佳答案
问题可能是您还没有停止播放声音吗?
当场景结束时,您也永远不会丢弃音频。
在create内,停止先前的音频(如果已经存在)。
最好只创建一次声音,然后在需要时重新使用它。
如果使用loadStream,则在播放后必须使用audio.rewind()。
有关此文档的文档还指出,您可能应该使用loadStream:
https://docs.coronalabs.com/guide/media/audioSystem/index.html
关于audio - 电晕:重新创建场景后,音频不会再开始播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299909/