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

音乐会在场景被创建时播放,并正确淡出,但在场景被再次创建时不会重新开始播放。

当我将 destroy 函数更改为以下内容时:

function scene:destroy(event)
    audio.fadeOut({channel = backgroundMusicChannel, time=2000})
    audio.stop(backgroundMusicChannel)
end

音乐不会淡出,因为它会立即停止播放,但在下一次场景创建时正确重新开始播放。

我还尝试使用 audio.stopWithDelay,它可以正确地淡出,但同样在场景再次创建时不会重新开始播放。

如果有人对此有任何见解,请让我知道!

点赞
用户5352026
用户5352026
可能问题在于如果音频还没有停止,你就不能(重新)播放它了?
在场景结束时也从未处理过音频。
在create中,如果之前存在音频,就停止它。

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

文档还建议您可能应该使用loadStream:
[https://docs.coronalabs.com/guide/media/audioSystem/index.html](https://docs.coronalabs.com/guide/media/audioSystem/index.html)
2016-02-09 19:26:01