Audio 如何在minim中一次只播放一个音频文件
以下是我所拥有的: 2个按钮 2种声音 当按下按钮1时,我希望播放声音1当按下按钮2时,我只希望播放声音2 我的代码:Audio 如何在minim中一次只播放一个音频文件,audio,processing,minim,Audio,Processing,Minim,以下是我所拥有的: 2个按钮 2种声音 当按下按钮1时,我希望播放声音1当按下按钮2时,我只希望播放声音2 我的代码: import ddf.minim.*; RadioButtons r; boolean showGUI = false; Minim minim; AudioPlayer player_1; AudioPlayer player_2; PImage img, img2; PShape img1; void setup() { size(1024,735);
import ddf.minim.*;
RadioButtons r;
boolean showGUI = false;
Minim minim;
AudioPlayer player_1;
AudioPlayer player_2;
PImage img, img2;
PShape img1;
void setup() {
size(1024,735);
String[] radioNames = {"Button1", "Button2"};
r = new RadioButtons(radioNames.length, 20,700,50,30, HORIZONTAL);
r.setNames(radioNames);
img = loadImage("img.jpg");
img1 = loadImage("img1.png");
img2 = loadShape("img1.svg");
minim = new Minim(this);
//sound1
player_1 = minim.loadFile("sound1.wav");
//sound2
player_2 = minim.loadFile("soun2d2.wav");
}
void draw() {
//background(0);
//println (mouseX +"," + mouseY);
// Draw the image to the screen at coordinate (0,0)
//sound1
image(img,0,0);
if(r.get() == 0)
shape(img1,695,106);
if(mousePressed){
if(mouseX>695 && mouseX <695+190 && mouseY>106 && mouseY <106+180){
fill(0,0,0,0);
image(img2,300,150);
player_1.cue(0);
player_1.play();
}
}
//sound2
if(r.get() == 1)
shape(img1,695,106);
if(mousePressed){
if(mouseX>695 && mouseX <695+190 && mouseY>106 && mouseY <106+180){
fill(0,0,0,0);
image(img2,300,150);
player_2.cue(0);
player_2.play();
}
}
if(showGUI)
{
r.display();
}
}
void mouseReleased()
{
if(showGUI){
if(mouseY> height-60)
r.mouseReleased();
else
showGUI = false;
}
else{
showGUI = true;
}
}
导入ddf.minim.*;
单选按钮r;
布尔showGUI=false;
极小极小;
音频播放器1;
音频播放器2;
PImage-img,img2;
PShape-img1;
无效设置(){
规模(1024735);
字符串[]radioNames={“Button1”,“Button2”};
r=新单选按钮(单选名称.长度,20700,50,30,水平);
r、 设置名称(无线电名称);
img=loadImage(“img.jpg”);
img1=loadImage(“img1.png”);
img2=loadShape(“img1.svg”);
最小值=新的最小值(本);
//声音1
player_1=minim.loadFile(“sound1.wav”);
//声音2
player_2=minim.loadFile(“soun2d2.wav”);
}
作废提款(){
//背景(0);
//println(mouseX+,“+mouseY);
//在坐标(0,0)处将图像绘制到屏幕上
//声音1
图像(img,0,0);
if(r.get()==0)
形状(IMG1695106);
如果(鼠标按下){
如果(mouseX>695&&mouseX 106&&mouseY 695&&mouseX 106&&mouseY高度-60)
r、 鼠标();
其他的
showGUI=false;
}
否则{
showGUI=true;
}
}
此时,两种声音同时播放
我遗漏了什么?在启动另一个样本之前,您必须停止当前样本。
如果你想玩玩家2,你必须打电话:
player_1.pause();
player_1.rewind();
在调用player_2.play()之前代码>和其他方法。更新::
这件事是我自己解决的
添加IF&ELSE IF语句
下面的例子
void draw() {
//background(0);
//println (mouseX +"," + mouseY);
// Draw the image to the screen at coordinate (0,0)
//sound1
image(img,0,0);
if(r.get() == 0)
{
code...
}
}
}
//sound2
else if(r.get() == 1)
{
code...
}
}
}
if(showGUI)
{
r.display();
}
}
我举了一个很愚蠢的例子,有什么帮助吗?这很愚蠢,特别是button类和事件处理,但由于我不知道您使用的是哪些单选按钮,我将这些行放在了一起。。。也许它能激励你
import ddf.minim.*;
PVector pOne, pTwo;
Button one, two;
Minim minim;
AudioPlayer player_1;
AudioPlayer player_2;
void setup() {
size(300,300);
pOne = new PVector(50, 150);
pTwo = new PVector(150, 150);
one = new Button (pOne, "one");
two = new Button (pTwo, "two");
minim = new Minim(this);
//sound1
player_2 = minim.loadFile("down_in_the_hole.mp3");
//sound2
player_1 = minim.loadFile("emotional_rescue.mp3");
}
void draw() {
background(220);
one.display();
one.update();
two.display();
two.update();
if(one.pressed){
player_2.pause();
player_1.rewind();
player_1.play();
ellipse(30,30,10,20);
// two.pressed = false;
}
if(two.pressed){
player_1.pause();
player_2.rewind();
player_2.play();
ellipse(130,30,10,20);
//one.pressed = false;
}
}
void mouseReleased(){
one.pressed = false;
two.pressed = false;
}
class Button{
String name;
PVector pos;
boolean pressed = false;
int xsz = 40;
int ysz = 20;
Button(PVector _pos, String _name ){
pos = _pos;
name = _name;
}
void display(){
color c = isOver()? 255:120;
fill(c);
rect(pos.x, pos.y, xsz, ysz);
fill(0);
text(name, pos.x+5, pos.y +ysz/2);
}
void update(){
if(isOver() && mousePressed)
pressed = true;
}
boolean isOver(){
return mouseX > pos.x && mouseX < pos.x + xsz &&
mouseY > pos.y && mouseY < pos.y + ysz;
}
}
导入ddf.minim.*;
PVector pOne,pTwo;
按钮一,按钮二;
极小极小;
音频播放器1;
音频播放器2;
无效设置(){
尺寸(300300);
pOne=新的PVector(50,150);
pTwo=新的PVector(150150);
一个=新按钮(pOne,“一”);
二=新按钮(pTwo,“二”);
最小值=新的最小值(本);
//声音1
player_2=minim.loadFile(“down_in_the_hole.mp3”);
//声音2
player_1=minim.loadFile(“emotional_rescue.mp3”);
}
作废提款(){
背景(220);
一、显示();
更新();
二、显示();
二、更新();
如果(按下一个){
player_2.暂停();
播放器_1.倒带();
player_1.play();
椭圆(30,30,10,20);
//2.1=错误;
}
如果(按两次){
player_1.暂停();
播放器_2.倒带();
player_2.play();
椭圆(130,30,10,20);
//1.1=错误;
}
}
void mouseereleased(){
1.1=错误;
2.1=错误;
}
类按钮{
字符串名;
PVector位置;
布尔值=假;
int xsz=40;
int-ysz=20;
按钮(PVector位置、字符串名称){
pos=_pos;
名称=_名称;
}
无效显示(){
颜色c=isOver()?255:120;
填充(c);
rect(位置x、位置y、xsz、ysz);
填充(0);
文本(名称,位置x+5,位置y+ysz/2);
}
无效更新(){
如果(isOver()&&鼠标按下)
按下=真;
}
布尔isOver(){
返回mouseX>pos.x&&mouseXpos.y&&mouseY
Pwdr谢谢你,我像你说的那样尝试了这个,但不管我做什么,它只会播放播放器2?你还有什么建议吗?你用什么做按钮?它是图书馆吗?哪一个?谢谢这差不多是我用的。