【发布时间】:2020-12-19 23:00:18
【问题描述】:
我这里有一个按钮,如果用户按下它,就会播放背景音乐。如果再次按下,它将暂停音乐。
这适用于单个 mp3 文件,但我想添加更多歌曲以进行变化。
我不想让它成为一个复杂的音乐播放器。只需一个按钮即可播放/暂停音乐,当 bg1 完成后,播放数组中的下一个。
另外,我希望播放的音乐可以随机选择吗?
请看一下我的代码到目前为止的样子:
var myAudio = document.getElementById("myAudio");
var isPlaying = false;
function togglePlay() {
isPlaying ? myAudio.pause() : myAudio.play();
};
myAudio.onplaying = function() {
isPlaying = true;
};
myAudio.onpause = function() {
isPlaying = false;
};
<audio id="myAudio" src="bg1.mp3" preload="auto" loop></audio>
<a href="#" onclick="togglePlay()">Play Music</a>
这是我的数组试用脚本,但我自己无法完成
let musicPlayer=[
`bg1.mp3`,
`bg2.mp3`,
`bg3.mp3`,
`bg4.mp3`
];
function playMusic(){
let index=Math.floor(Math.random()*musicPlayer.length);
let div=document.querySelector('#music');
最后,我打算制作一个包含大约 70 个 mp3 文件的数组,这可能会导致加载时间过长。可以制作成直到轮到它才加载。有点像lazy loading 用于音频文件?
我真的很感激。提前非常感谢!
【问题讨论】:
-
问题是什么?您只需更改
<audio />元素的.src(+ 一些“等待...”,直到浏览器能够实际播放文件。 -
“有点像音频文件的延迟加载?” - 它的工作方式与图像相同。
-
谢谢,但这只是一个额外的问题。我的主要问题是如何制作 mp3 文件数组?
-
这将是第三个问题。不,您的“主要问题”是标题中的问题。至少 SO 是这样工作的;)
标签: javascript html audio