2016-08-16 90 views
1

我正在尝试为我的游戏加载不同的声音。一个声音必须加演戏剧跳跃,称为“upNoise”。我想要一个名为“Sound”的类并调用不同的函数来播放不同的文件。问题说:它说构造函数“SoundFile(Sound,String)”不存在。继承人我的代码。处理负载和播放声音

import processing.sound.*; 

class Sound { 

    SoundFile file; 

    Sound() { 

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

    } 

}

回答

0

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找到。

+0

感谢第一个选项为我工作! –