【问题标题】:Processing - playing different audio depending on mousePressed处理 - 根据 mousePressed 播放不同的音频
【发布时间】:2016-11-25 18:34:11
【问题描述】:

我正在尝试根据单击我的Processing 草图的哪个“区域”来播放不同的音频文件。我在使用 soundFile 时遇到问题,即使在单击第一个区域时只能播放一个文件。

我已经导入了sound library,但一定有语法或目录错误。这是我不断收到的信息:

Error: Soundfile doesn't exist. Pleae check path
Could not run the sketch (Target VM failed to initialize).
For more information, read revisions.txt and Help → Troubleshooting.

首先,是否可以加载5个不同的声音文件作为if语句的条件?

代码在这里:

PImage img;  // Declare variable "a" of type PImage    
import processing.sound.*;
    SoundFile file;


void setup() {
  size(1475, 995);
  // The image file must be in the data folder of the current sketch 
  // to load successfully
  img = loadImage("PaceTaker.jpg");  // Load the image into the program
}

void draw() {
  // Displays the image at its actual size at point (0,0)
  image(img, 0, 0);
}
void mousePressed() {
  if (mouseX>105 && mouseX<337 && mouseY>696 && mouseY<714) {
     // Load a soundfile from the /data folder of the sketch and play it back
    file = new SoundFile(this, "Heartbeatreg.mp3");
    file.play();
    stroke(0);
  } 
  else if (mouseX>410 && mouseX<584 && mouseY>696 && mouseY<714) {
    println("yikes2");
    stroke(0);
  }
  else if (mouseX>659 && mouseX<837 && mouseY>696 && mouseY<714) {
    println("yikes3");
    stroke(0);
  }
  else if (mouseX>928 && mouseX<1065 && mouseY>696 && mouseY<714) {
    println("yikes4");
    stroke(0);
  }
  else if (mouseX>1123 && mouseX<1397 && mouseY>696 && mouseY<714) {
    println("yikes5");
    stroke(0);
  }
   else {
    println("hello");
  }
}

【问题讨论】:

    标签: java if-statement audio processing


    【解决方案1】:

    minim 解决了这个问题。代码如下:

    PImage img;  // Declare variable "a" of type PImage
    import ddf.minim.*;
    AudioPlayer player;
    Minim minim;
    
    void setup() {
      size(1475, 995);
      // The image file must be in the data folder of the current sketch 
      // to load successfully
      img = loadImage("PaceTaker.jpg");  // Load the image into the program
      minim = new Minim(this);
      player = minim.loadFile("Heartbeatreg.mp3");
    }
    
    void draw() {
      // Displays the image at its actual size at point (0,0)
      image(img, 0, 0);
    }
    void mousePressed() {
      if (mouseX>105 && mouseX<337 && mouseY>696 && mouseY<714){
        if (player.isPlaying()) {
          player.close();}
       player = minim.loadFile("Heartbeatreg.mp3");
       player.play();
        stroke(0);
      } 
      else if (mouseX>410 && mouseX<584 && mouseY>696 && mouseY<714) {
        if (player.isPlaying()) {
          player.close();}
        player = minim.loadFile("Heartbeatflatline.mp3");
        player.play();
        stroke(0);
      }
      else if (mouseX>659 && mouseX<837 && mouseY>696 && mouseY<714) {
        if (player.isPlaying()) {
          player.close();}
        player = minim.loadFile("Heartbeatsuperfast.mp3");
        player.play();
        stroke(0);
      }
      else if (mouseX>928 && mouseX<1065 && mouseY>696 && mouseY<714) {
        if (player.isPlaying()) {
          player.close();}
        player = minim.loadFile("Heartbeatslow.mp3");
        player.play();
        stroke(0);
      }
      else if (mouseX>1123 && mouseX<1397 && mouseY>696 && mouseY<714) {
        if (player.isPlaying()) {
          player.close();}
        player = minim.loadFile("Heartbeatfast.mp3");
        player.play();
        stroke(0);
      }
       else {
        println("void click");
      }
    }
    

    【讨论】:

      【解决方案2】:

      你真的不应该像那样加载mousePressed() 中的文件。相反,将它们全部加载到setup() 中,然后在需要时引用它们。这是一个例子:

      Minim minim;
      AudioPlayer songOne;
      AudioPlayer songTwo;
      
      void setup() {
        size(1475, 995);
        minim = new Minim(this);
        songOne = minim.loadFile("SongOne.mp3");
        songTwo = minim.loadFile("SongTwo.mp3");
      }
      
      void draw() {
      }
      
      void mousePressed() {
        if (mouseX < width/2) {
          songOne.rewind();
          songOne.play();
        } 
        else {
          songTwo.rewind();
          songTwo.play();
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多