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);
}
}