簡體   English   中英

處理負載和播放聲音

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM