Corona:在重新创建场景后,音频不会再次开始播放

时间:2016-02-09 18:51:17

标签: audio lua corona scene

我正在尝试播放背景声音,仅在一个场景中播放。当这个场景被破坏时,声音会淡出然后停止。然后,当重新创建场景时,声音应该再次开始播放。

以下是我的尝试:

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,它正确淡出,但同样地,再次创建场景时不再开始播放。

如果有人对此处发生的事情有任何见解,请告诉我们!

1 个答案:

答案 0 :(得分:0)

如果问题没有停止,问题是你不能(重新)播放声音吗? 当场景结束时,您也永远不会丢弃音频。 在创建内部,如果已存在,则停止上一个音频。

最好创建一次声音并在需要时重复使用它。 如果你使用loadStream,你必须在播放后使用audio.rewind()。

关于此的文档还指出您应该使用loadStream: https://docs.coronalabs.com/guide/media/audioSystem/index.html