[英]Processing load and play sound
我正試圖為我的游戲加載不同的聲音。 一個聲音必須超時播放跳躍,稱為“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
構造函數可能如下所示:
Sound(PApplet sketch){
file = new SoundFile(sketch, "upNoise.wav");
}
然后在Processing sketch中,使用this
關鍵字將PApplet
傳遞給Sound
構造函數:
void setup(){
Sound yourSound = new Sound(this);
}
選項2:由於Processing將所有類視為內部類,您還可以使用稍微奇怪的語法,通過使用草圖的名稱來引用“外部”,而不是從草圖中傳入this
:
Sound(){
file = new SoundFile(YourSketchName.this, "upNoise.wav");
}
但這有點奇怪,並不適用於所有情況,所以你可能最好只是從你的草圖傳遞this
。
更多信息可以在參考資料中找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.