audio - 电晕:重新创建场景后,音频不会再开始播放

标签 audio lua coronasdk 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

声音在最初创建场景时播放,并正确淡出,但在再次创建场景时不会再次开始。

当我将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/

相关文章:

c - C 怎么可能没有内部函数,而用 C 实现的语言却可以呢?

函数指针的 C++ lua 桥接问题

android - 可以使用来自耳机插孔的音频吗?

floating-point - 在纯 Lua 中解析 IEEE754 double float ?

Python/tkinter : elapsed time in label/updating a label constantly?

audio - Corona sound_decode 触发错误

android - 在场景之间使用分数 Corona SDK

lua - 从最短到最长对单词数组/表进行排序

python - 预期的 Chromecast 音频延迟?

audio - Unity-为什么我无法通过脚本播放所需的声音?