每当我按下空格键等键时,我的代码的这一特定部分都会在屏幕上显示一条红线。它也应该播放音频"激光"每次按下一个键。当我第一次运行我的处理代码并点击空格键时,只要按住键(正如预期的那样),它就会播放声音并显示红线。 然而,第二次按下空格键只会导致出现红线而且没有声音播放。有人可以解释一种方法来让这项工作一直持续而不仅仅是第一次吗?
import ddf.minim.* ;
Minim minim;
AudioPlayer laser;
void setup()
{
minim = new Minim(this);
laser = minim.loadFile("laser.wav");
}
void draw()
{
if(keyPressed)
{
laser.play(); // Laser sound
stroke(255,0,0); // Red
line(337,197,1500,197); // Laser
}
else
{
stroke(255,255,255); // White
line(337,197,1500,197); // Cover up the laser
}
}
答案 0 :(得分:1)
使用minim
播放声音就像读书一样,你只需按lase.play()
开始阅读,因为你的声音很短,它将完整播放。如果您想再次阅读/播放,则必须指定开始位置。
基本方法正在使用laser.rewind()
,但您还可以使用更具体的功能,例如cue(int millis)
,以获取更多信息JavaDoc。
同时检查draw()
内是否按下按键以播放音乐是不好的做法,我建议使用键盘handlers。
void draw()
{
stroke(line);
line(337,197,1500,197);
}
void keyPressed() {
laser.play();
line = color(255, 0, 0);
}
void keyReleased() {
laser.pause(); //pause when key is released
laser.rewind();
line = color(255, 255, 255);
}