audio.stop()

类型 函数
audio.*
返回的值 数字
修订 2024.3703 版
关键词 audio、stop、声音、音乐
参见 audio.play()

总览

停止在通道上播放(或全部通道)并清除这些通道,以便再次播放。仍会调用回调,但完成标志会被设置为 false

此函数会返回实际停止的通道数,或者在出现错误时返回 -1

陷阱

请注意,audio.stop() 不会从 audio.loadSound()audio.loadStream() 中获取任何句柄。这是设计使然。你要停止特定通道,而不是声音句柄。想象一下,多重爆炸效果在同一时间同时出现。在这种情况下,没有必要对爆炸句柄调用 audio.stop(),因为每个爆炸结束的时间可能会略有不同。

如果使用 audio.loadStream() 加载的音频,在调用 stop 时音频的位置不会被重置。所以当你再次针对同一路由调用 audio.play() 时,它会从上次暂停的位置继续播放(“约略”的意思是可能略微靠后一点,因为所有预先填充分都被 audio.stop() 弃置了)。这与使用 audio.loadSound() 加载的音频形成对比,后者会从缓冲区的开始位置重新开始播放(声音的开始位置,除非你使用 audio.seek() 对其进行了修改)。所以,对于 audio.loadStream,当你重新使用音频句柄时,可能需要针对句柄调用 audio.rewind()

语法

audio.stop( [channel] )
频道 (可选)

数字。要停止的通道。如果没有传递任何参数,则所有的通道都会被停止。

示例

local backgroundMusicChannel = audio.play( backgroundMusic, { loops=-1 }  ) 
audio.stop( backgroundMusicChannel )

-- NOTE: backgroundMusicChannel is not an audio handle. It is a number representing the channel that is playing.