Javascript 通过鼠标单击预加载播放随机声音文件(mp3文件)

Javascript 通过鼠标单击预加载播放随机声音文件(mp3文件),javascript,processing,p5.js,Javascript,Processing,P5.js,“我希望这样,当按下鼠标时,它会从代码顶部预装的三个声音文件中随机播放一个声音文件。目前,我一次只能播放一个声音文件” 函数预加载(){ bird=loadSound('kooka.mp3'); bird2=加载声音('galah.mp3'); bird3=loadSound('buckoo.mp3'); } 函数设置(){ createCanvas(窗口宽度、窗口高度); 背景(0); } 函数绘图(){ 库卡(); } 函数kooka(){ 如果(按下鼠标){ bird2.播放模式(“unt

“我希望这样,当按下鼠标时,它会从代码顶部预装的三个声音文件中随机播放一个声音文件。目前,我一次只能播放一个声音文件”

函数预加载(){
bird=loadSound('kooka.mp3');
bird2=加载声音('galah.mp3');
bird3=loadSound('buckoo.mp3');
}
函数设置(){
createCanvas(窗口宽度、窗口高度);
背景(0);
}
函数绘图(){
库卡();
}
函数kooka(){
如果(按下鼠标){
bird2.播放模式(“untildone”);
小鸟2.玩耍();
bird2.setVolume(0.3);

创建一个声音数组并从数组中“选择”一个随机声音:

let sounds=[bird,bird2,bird3];
让randomSound=声音[Math.floor(Math.random()*sounds.length)];
Math.random()
生成一个介于0.0和1.0之间的随机数。因此
Math.random()*听起来。length
是一个浮点数>=0.0和
听起来。length
数学.floor获取小于或等于该数字的整数值

如果多次按下鼠标按钮,将播放多种声音。 要确保一次只播放一个声音,您必须在变量(
currentSound
)中记录当前声音,并验证声音是否已播放完毕,然后才能开始播放新声音。
此外,请使用回调而不是内置状态变量。当按下鼠标时,事件只发生一次,而只要按下鼠标,变量就会被声明。例如:

函数绘图(){
}
让你的声音;
函数mousePressed(){
let is_playing=currentSound&¤tSound.isPlaying();
如果(!正在播放){
让声音=[鸟,鸟2,鸟3];
currentSound=声音[Math.floor(Math.random()*sounds.length)];
currentSound.playMode('untilDone');
currentSound.play();
currentSound.setVolume(0.3);
}
}

我将其更改为此,但它似乎同时组合声音,而不是每次单击都随机选择一个单独的声音文件。var birds=[bird,bird2,bird3];var rando=random(birds);if(mouseIsPressed){rando.playMode('sustain');rando.play();rando.setVolume(0.3);}嘿,谢谢你的帮助,但它一次播放多个声音文件,而不是孤立一个特定的声音文件,一次只播放一个声音。帮助非常感激嘿,伙计,谢谢,但当我把它放进去并单击它同时播放多个声音文件时,我需要它随机选择一个声音文件,然后单独播放那一个声音直到完成。为帮助干杯谢谢你的帮助,但我还需要语音激活功能,不管怎样,我发明了这个肮脏的方法,看起来很有效:
var input;
var mic; 
var bird;
var bird2;
var bird3; 
var bird4; 
var bird5; 
var bird6; 


function preload() {
       bird = loadSound('kooka.mp3');
       bird2 = loadSound('galah.mp3');
       bird3 = loadSound('lyre.mp3');
       bird4 = loadSound('friar.mp3');
       bird5 = loadSound('whistler.mp3');
       bird6 = loadSound('cuckoo.mp3');

    }


function setup() {
  createCanvas(windowWidth, windowHeight);
  background(0);
  input = new p5.AudioIn();
  input.start();


}

function draw() {



     var volume = input.getLevel();
     var threshold = 0.2;
     var regularArr = [bird, bird2, bird3, bird4, bird5, bird6];

    if (volume > threshold) {
    shuffle(regularArr, true);
        var newArr = shuffle(regularArr);
        var beh = newArr[0]; 
        var bef = newArr[1]; 
        var ben = newArr[2];
        var beq = newArr[3];
        var bek = newArr[4];
        var bez = newArr[5];

        beh.playMode('untilDone');
        beh.play(0.1);
        bef.stop(); 
        ben.stop();
        beq.stop(); 
        bek.stop(); 
        bez.stop();  
        print(beh);


}
}