如何使用JavaScript按顺序播放多个声音
How to play a number of sounds in sequence with JavaScript?
我有一些mp3声音(I, y, e等)。我想播放他们在一个序列(即没有任何暂停之间),当用户按下按钮基于用户在文本字段中给出的单词(例如,eye
)。
我知道音频可以使用以下HTML来播放:
<source type="audio/mpeg" id="mp3"></source>
你可以使用ended
事件在前一个声音完成时播放下一个声音:
var i = document.getElementById("i"),
y = document.getElementById("y"),
e = document.getElementById("e");
i.addEventListener("ended", function() {
y.play();
}, false);
y.addEventListener("ended", function() {
e.play();
}, false);
i.play();
<audio id="i" src="http://www.internationalphoneticalphabet.org/ipa-sounds-folder/mp3/Close_front_unrounded_vowel.mp3" controls></audio>
<audio id="y" src="http://www.internationalphoneticalphabet.org/ipa-sounds-folder/mp3/Close_front_rounded_vowel.mp3" controls></audio>
<audio id="e" src="http://www.internationalphoneticalphabet.org/ipa-sounds-folder/mp3/Close-mid_front_unrounded_vowel.mp3" controls></audio>
…但请注意,这些音频文件在音频数据的中有暂停。所以你要么必须编辑文件,要么必须在它们上设置音频位置,可能是每个声音的自定义值,你必须响应timeupdate
事件,而不是在音频中观看你认为声音实际上结束的点,在该点停止播放并开始下一个。
下面是截断i
声音的第一部分和最后一部分的示例:
var i = document.getElementById("i"),
y = document.getElementById("y"),
e = document.getElementById("e");
var istarted = false, istop;
i.addEventListener("canplay", function() {
this.currentTime = 0.02;
istop = this.duration - 0.6;
if (!istarted) {
this.play();
istarted = true;
}
});
i.addEventListener("timeupdate", function() {
if (this.currentTime > istop) {
this.pause();
y.play();
}
}, false);
y.addEventListener("ended", function() {
e.play();
}, false);
<audio id="i" src="http://www.internationalphoneticalphabet.org/ipa-sounds-folder/mp3/Close_front_unrounded_vowel.mp3" controls></audio>
<audio id="y" src="http://www.internationalphoneticalphabet.org/ipa-sounds-folder/mp3/Close_front_rounded_vowel.mp3" controls></audio>
<audio id="e" src="http://www.internationalphoneticalphabet.org/ipa-sounds-folder/mp3/Close-mid_front_unrounded_vowel.mp3" controls></audio>
上面两个都不是很健壮,可能应该等待确保媒体被加载,等等。它们只是指向相关的事情去做。
还要注意的是,timeupdate
是一个有点"尽力而为"的事件,它不会是超精确的
相关文章:
- 如何减少在移动网络应用程序上播放声音的延迟
- 使用JS和JQuery播放和停止声音
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- 可以'无法播放声音
- 声音不会在一页上播放,但在另一页上会播放
- 如何在javascript中一个声音文件接一个声音地播放
- 在Wordpress网站的图像点击上播放随机声音
- 使用javascript播放声音
- 点击播放声音
- 如何检测网页中的更改并使用Javascript播放声音
- 在网站上播放多个循环声音
- 在悬停图像上播放声音,悬停在图像上时停止
- 无法使用JavaScript在iPhone上播放声音,但可以在Android上播放
- 如何停止YouTube声音播放
- 单击按钮时播放音频,并在声音播放完成后重定向
- 现场网站上没有声音播放
- 将“结束”事件绑定到没有 ID 或类的声音播放
- 如何播放/暂停声音和声音播放从声音的开始
- JQuery声音播放和停止
- 暂停网络音频 API 声音播放