APlayer 循环模式与播放顺序
循环模式 loop
loop 参数控制播放器播放到列表末尾(或单曲播完)后怎么办。有三个可选值:
| 取值 | 含义 | 效果 |
|---|---|---|
'all' | 全部循环 | 播完列表最后一首后自动回到第一首继续 |
'one' | 单曲循环 | 当前歌曲播完后自动重新播放当前歌曲 |
'none' | 不循环 | 播完列表最后一首后停止播放 |
播放顺序 order
order 参数控制从一首歌切到下一首歌时,选择列表里的哪一首。有两个可选值:
| 取值 | 含义 | 效果 |
|---|---|---|
'list' | 顺序播放 | 严格按 audio 数组里的先后顺序切换 |
'random' | 随机播放 | 每次切换随机选一首,可能重复选到已播过的 |
两者的组合效果
循环模式和播放顺序是两个独立维度,可以自由组合:
| 组合 | 效果 |
|---|---|
loop: 'all' + order: 'list' | 按顺序播完一整轮后重头再来 |
loop: 'all' + order: 'random' | 随机播,永不停止(每首播完随机挑下一首) |
loop: 'one' + order: 'list' | 单曲重复(order 被忽略,因为一直停在同一首) |
loop: 'one' + order: 'random' | 同上面,order 被忽略 |
loop: 'none' + order: 'list' | 按顺序播一遍,最后一首播完停止 |
loop: 'none' + order: 'random' | 随机播,每首只播一次,全部播完停止 |
默认值
loop默认'all'order默认'list'
也就是说,默认行为是"按数组顺序无限循环播放全部歌曲"。
运行时切换
你可以在初始化之后通过 API 或重新赋值来切换:
// 方式一:直接修改属性后触发重新渲染
ap.options.loop = 'one'; // 切成单曲循环
ap.options.order = 'random'; // 切成随机顺序
// 注:修改后需要点击一次按钮或重新播放才会生效
实际上,通过 APlayer 内部按钮切换循环和顺序更直接——界面上有专门的按钮让用户手动切换。APlayer 会记住用户的选择(通过 localStorage)。
用户记忆
重要:APlayer 会通过 localStorage 记住用户的循环和顺序选择。用户在界面上切换后,下次加载页面时会自动恢复用户上次的选择,覆盖初始化时传入的 loop 和 order 默认值。
如果你希望强制使用代码里设定的值而不让用户记忆覆盖,可以改用一个自定义的 storageName 或者在初始化前清除 localStorage:
localStorage.removeItem('aplayer-setting'); // 清除上次的用户设置
const ap = new APlayer({
loop: 'none',
order: 'list',
// ...
});