处理负载和播放声音
问题描述:
我正在尝试为我的游戏加载不同的声音。一个声音必须加演戏剧跳跃,称为“upNoise”。我想要一个名为“Sound”的类并调用不同的函数来播放不同的文件。问题说:它说构造函数“SoundFile(Sound,String)”不存在。继承人我的代码。处理负载和播放声音
import processing.sound.*;
class Sound {
SoundFile file;
Sound() {
file = new SoundFile(this, "upNoise.wav");
}
}
答
的SoundFile
构造函数需要传递到它的构造函数的PApplet
一个实例。
当您在草图中时,可以使用this
关键字来指代PApplet
实例。
但由于您在Sound
班,因此您的this
关键字指的是Sound
实例。这就是你传递给构造函数SoundFile
的内容。 SoundFile
不知道你的Sound
类是什么,所以你会得到那个错误。
要解决此问题,您必须将PApplet
实例传递给SoundFile
构造函数。
选项1:传递PApplet
实例为您Sound
构造函数的参数,然后传递参数到SoundFile
构造。你Sound
构造可能是这样的:
void setup(){
Sound yourSound = new Sound(this);
}
选项2:
Sound(PApplet sketch){
file = new SoundFile(sketch, "upNoise.wav");
}
然后在你的处理草图,你会使用this
关键字通过PApplet
到您Sound
构造由于处理将所有类视为内部类,也可以使用稍微奇怪的语法来引用“外部此”,方法是使用草图的名称,而不是从草图中传入this
:
Sound(){
file = new SoundFile(YourSketchName.this, "upNoise.wav");
}
但是,这是一个有点古怪,并不会在所有情况下工作,所以你可能会更好过只是路过this
从草图。
更多信息可在the reference找到。
感谢第一个选项为我工作! –