ctx.sound 控制扩展触发的音频。为音频指定稳定的 id 后,可以用同一个 id 暂停、恢复或停止它。
API
| 方法 | 返回值 | 说明 |
|---|
play(uri, options?) | void | Promise<void> | 播放音频 |
stop(idOrUri) | void | Promise<void> | 停止音频 |
pause(idOrUri) | void | Promise<void> | 暂停音频 |
resume(idOrUri) | void | Promise<void> | 恢复音频 |
常用 play() 选项包括 id、channel、loop、volume 和 fadeDuration。
案例:播放并暂停音乐室试听曲
输入: 素材 audio/bgm/summer-night.ogg 已包含在项目中,播放 id 使用 music-preview。
await ctx.sound.play("audio/bgm/summer-night.ogg", {
id: "music-preview",
loop: true,
volume: 0.8,
});
await ctx.sound.pause("music-preview");
输出: 首次调用完成后音乐开始循环播放;第二次调用完成后,播放位置保留但声音暂停。两个 API 的解析值都是 undefined。随后调用 ctx.sound.resume("music-preview") 会从暂停位置继续。
同一功能内尽量固定使用一个播放 id,不要依赖较长、可能变化的素材 URI 来停止音频。