处理加载和播放声音
Processing load and play sound
我正在尝试为我的游戏加载不同的声音。一个声音必须播放超时播放跳跃,称为 "upNoise." 我想要一个 class 称为 "Sound" 并调用不同的函数来播放不同的文件。问题是:它说构造函数 "SoundFile(Sound, String)" 不存在。这是我的代码。
import processing.sound.*;
class Sound {
SoundFile file;
Sound() {
file = new SoundFile(this, "upNoise.wav");
}
}
SoundFile
构造函数需要一个 PApplet
的实例传递到它的构造函数中。
在草图中,您可以使用 this
关键字来引用该 PApplet
实例。
但是由于您在 Sound
class 中,您的 this
关键字指的是 Sound
实例。这就是您传递给 SoundFile
构造函数的内容。 SoundFile
不知道你的 Sound
class 是什么,所以你会得到那个错误。
要解决此问题,您必须将 PApplet
实例传递给 SoundFile
构造函数。
选项 1: 将 PApplet
实例作为参数传递到您的 Sound
构造函数中,然后将该参数传递到 SoundFile
构造函数。您的 Sound
构造函数可能如下所示:
Sound(PApplet sketch){
file = new SoundFile(sketch, "upNoise.wav");
}
然后在您的 Processing sketch 中,您将使用 this
关键字将 PApplet
传递到您的 Sound
构造函数中:
void setup(){
Sound yourSound = new Sound(this);
}
选项 2: 由于 Processing 将所有 classes 视为内部 classes,您还可以使用稍微奇怪的语法来引用 "outer this" 通过使用草图的名称而不是从草图中传入 this
:
Sound(){
file = new SoundFile(YourSketchName.this, "upNoise.wav");
}
但这有点奇怪,并非在所有情况下都有效,因此您最好从草图中传递 this
。
可以在 the reference 中找到更多信息。
我正在尝试为我的游戏加载不同的声音。一个声音必须播放超时播放跳跃,称为 "upNoise." 我想要一个 class 称为 "Sound" 并调用不同的函数来播放不同的文件。问题是:它说构造函数 "SoundFile(Sound, String)" 不存在。这是我的代码。
import processing.sound.*;
class Sound {
SoundFile file;
Sound() {
file = new SoundFile(this, "upNoise.wav");
}
}
SoundFile
构造函数需要一个 PApplet
的实例传递到它的构造函数中。
在草图中,您可以使用 this
关键字来引用该 PApplet
实例。
但是由于您在 Sound
class 中,您的 this
关键字指的是 Sound
实例。这就是您传递给 SoundFile
构造函数的内容。 SoundFile
不知道你的 Sound
class 是什么,所以你会得到那个错误。
要解决此问题,您必须将 PApplet
实例传递给 SoundFile
构造函数。
选项 1: 将 PApplet
实例作为参数传递到您的 Sound
构造函数中,然后将该参数传递到 SoundFile
构造函数。您的 Sound
构造函数可能如下所示:
Sound(PApplet sketch){
file = new SoundFile(sketch, "upNoise.wav");
}
然后在您的 Processing sketch 中,您将使用 this
关键字将 PApplet
传递到您的 Sound
构造函数中:
void setup(){
Sound yourSound = new Sound(this);
}
选项 2: 由于 Processing 将所有 classes 视为内部 classes,您还可以使用稍微奇怪的语法来引用 "outer this" 通过使用草图的名称而不是从草图中传入 this
:
Sound(){
file = new SoundFile(YourSketchName.this, "upNoise.wav");
}
但这有点奇怪,并非在所有情况下都有效,因此您最好从草图中传递 this
。
可以在 the reference 中找到更多信息。