2016-08-16 92 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

感謝第一個選項爲我工作! –