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");
}
然后在您的处理草图中,您将使用 this 关键字将 PApplet 传递给您的 Sound 构造函数:
void setup(){
Sound yourSound = new Sound(this);
}
选项 2: 由于 Processing 将所有类都视为内部类,因此您还可以使用稍微奇怪的语法来引用“外部 this”,即使用您的草图名称而不是传入this 来自你的草图:
Sound(){
file = new SoundFile(YourSketchName.this, "upNoise.wav");
}
但这有点奇怪,并不是在所有情况下都有效,所以你最好只从你的草图中传递this。
更多信息可以在the reference找到。