处理最小空指针



我正在使用 Minim 处理,但如果加载文件minim在另一个类中,我无法弄清楚如何播放文件。我同时使用了AudioSnippetAudioSample,它们都给了我NullPointerException。这是PlayAudio类。

  Minim minim;
  AudioSample sample;
  AudioSnippet snippet;
class PlayAudio {
  PlayAudio() {
    minim = new Minim(this);
    sample = minim.loadSample("Audio/hover1.mp3", 2048);
    snippet = minim.loadSnippet("Audio/hover1.mp3");
  }
  void playSnippet() {
    sample.trigger();
    snippet.play();
  }
}

另一种是标准的加工setup()draw()。按下鼠标时应播放文件。

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
PlayAudio audio = new PlayAudio();
void setup() {
  size(300, 300);
  background(0);
}
void draw() {
   if(mousePressed) {
    audio.playSnippet();
   }
}

我得到的错误是:

==== JavaSound Minim Error ====
==== Couldn't find a sketchPath method on the file loading object provided!
==== File recording will be disabled.
==== JavaSound Minim Error ====
==== Couldn't find a createInput method in the file loading object provided!
==== File loading will be disabled.
==== JavaSound Minim Error ====
==== Error invoking createInput on the file loader object: null
=== Minim Error ===
=== Couldn't load the file Audio/hover1.mp3

只需将 minim = new Minim(this); 放入设置块。如果您在PlayAudio类中执行此操作,则会得到错误的论点。

工作代码:

import ddf.minim.*;
Minim minim;
AudioSample sample;
AudioSnippet snippet;
PlayAudio audio;
void setup() {
  size(300, 300);
  minim = new Minim(this);
  audio = new PlayAudio();
  background(0);
}
void draw() {
  if (mousePressed) {
    audio.playSnippet();
  }
}
class PlayAudio {
  PlayAudio() {
    sample = minim.loadSample("Audio/hover1.mp3", 2048);
    snippet = minim.loadSnippet("Audio/hover1.mp3");
  }
  void playSnippet() {
    sample.trigger();
    snippet.play();
  }
}

最新更新