处理负载和播放声音

时间:2016-08-16 16:48:53

标签: java processing

我正试图为我的游戏加载不同的声音。一个声音必须超时播放跳跃,称为“upNoise”。我想要一个名为“Sound”的类,并调用不同的函数来播放不同的文件。问题是:它说构造函数“SoundFile(Sound,String)”不存在。这是我的代码。

import processing.sound.*;

class Sound {

  SoundFile file;

  Sound() {

    file = new SoundFile(this, "upNoise.wav");

  }

}

1 个答案:

答案 0 :(得分:0)

SoundFile构造函数需要将PApplet的实例传递给其构造函数。

当您在草图中时,可以使用this关键字来引用该PApplet实例。

但由于您所在的Sound课程,this关键字指的是Sound个实例。这就是你传递给SoundFile构造函数的东西。并且SoundFile不知道您的Sound类是什么,因此您会收到该错误。

要解决此问题,您必须将PApplet实例传递给SoundFile构造函数。

选项1:PApplet实例作为参数传递到Sound构造函数中,然后将该参数传递给SoundFile构造函数。您的Sound构造函数可能如下所示:

Sound(PApplet sketch){
   file = new SoundFile(sketch, "upNoise.wav");
}

然后在处理草图中,您使用PApplet关键字将Sound传递到this构造函数中:

void setup(){
   Sound yourSound = new Sound(this);
}

选项2:由于Processing将所有类视为内部类,您还可以使用稍微奇怪的语法来引用“外部”,使用草图的名称而不是传入草图中的this

Sound(){
   file = new SoundFile(YourSketchName.this, "upNoise.wav");
}

但这有点奇怪,并不适用于所有情况,所以你最好只从草图中传递this

可以在the reference找到更多信息。