首先,我要说我是你见过的最糟糕的程序员。我正在尝试制作一个Javascript,让我只需按下一个按钮,就可以播放随机的声音。我的想法是做一个随机的数学运算,让一个数字与一个声音相对应,然后再做一个if语句来播放。我真的不知道下一步该怎么走。实际上,我甚至不知道我做得对不对。
我的Javascript
function myFunction() {
var x = Math.floor((Math.random() * 10) + 1);
var sounds = ["sound1", "sound2", "sound3", "sound4", "sound5", "sound6", "sound7", "sound8", "sound9", "sound10"];
sound1 = 1;
sound2 = 2;
sound3 = 3;
sound4 = 4;
sound5 = 5;
sound6 = 6;
sound7 = 7;
sound8 = 8;
sound9 = 9;
sound10 = 10;
sound1.src = "sound1.mp3";
//And so on of the sound files
}我的HTML
<button onclick="mySounds()">Click for a sound</button>
<p id="Sounds"></p>发布于 2016-09-21 06:16:42
您可以使用方法play(),如下链接所示。W3 Schools
我认为如果使用Math.random()方法会更好。在下面的代码中,您可以定义一个最大值和最小值。
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}在你的例子中,最小值是0,最大值是数组中最后一项的索引。这个应该可以了。
如果您直接更改数组项,则指向声音的链接您的代码甚至会更短。
发布于 2016-09-21 06:13:47
您需要添加一个音频标签。只有在浏览器支持HTML5的情况下,这才起作用
你可以在这里阅读更多关于音频标签:http://www.w3schools.com/html/html5_audio.asp和音频DOM参考在这里:http://www.w3schools.com/tags/ref_av_dom.asp
通过这些链接,您可以轻松实现您想要做的事情。
并检查以下答案,了解如何更改音频源
发布于 2016-09-21 06:19:34
您使用Math.random来随机选择要播放的声音是正确的。您所要做的就是将生成的数字映射到声音数组中的索引。
然后您可以使用jQuery发出您想要听到的声音:https://github.com/admsev/jquery-play-sound
mySounds = [ 'sound1', 'sound2', 'sound3', 'sound4', 'sound5' ]
function randomSound() {
var index = Math.floor(Math.random() * 1000) % mySounds.length;
$.playSound('http://yourdomain.com/sounds/' + mySounds[index]);
}我乘以1000,因为它最好使用更大的值范围。mod确保我们总是得到一个适合你的声音数量的值。
如果您不想使用jQuery,则必须为您想要的每个声音创建音频标签,并显式调用它们
HTML
<audio id="sound1" src="sounds/sound1" type="audio/wav">
<audio id="sound2" src="sounds/sound2" type="audio/wav">
<audio id="sound3" src="sounds/sound3" type="audio/wav">
<audio id="sound4" src="sounds/sound4" type="audio/wav">
<audio id="sound5" src="sounds/sound5" type="audio/wav">然后选择元素并播放声音
Javascript
mySounds = [ 'sound1', 'sound2', 'sound3', 'sound4', 'sound5' ]
function randomSound() {
var index = Math.floor(Math.random() * 1000) % mySounds.length;
var id = mySounds[index];
var audioElement = document.getElementById(id);
audioElement.play();
}https://stackoverflow.com/questions/39604400
复制相似问题