2016-08-16 2 views
1

Ich versuche verschiedene Sounds für mein Spiel zu laden. Ein Sound muss Überstunden spielen das Spiel springt, genannt "upNoise." Ich möchte eine Klasse namens "Sound" haben und verschiedene Funktionen aufrufen, um verschiedene Dateien abzuspielen. Das Problem lautet: Es heißt, der Konstruktor "SoundFile (Sound, String)" existiert nicht. Heres mein Code.Load verarbeiten und Sound abspielen

import processing.sound.*; 

class Sound { 

    SoundFile file; 

    Sound() { 

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

    } 

}

Antwort

0

SoundFile Der Konstruktor erwartet eine Instanz von PApplet in seinen Konstruktor übergeben.

Wenn Sie in einer Skizze sind, können Sie das Schlüsselwort this verwenden, um auf diese PApplet Instanz zu verweisen.

Aber da Sie in einer Sound Klasse sind, bezieht sich Ihr this Schlüsselwort auf die Sound Instanz. Das übertrage man in den SoundFile Konstruktor. Und SoundFile weiß nicht, was Ihre Sound Klasse ist, so erhalten Sie diesen Fehler.

Um dies zu beheben, müssen Sie die PApplet Instanz in den SoundFile Konstruktor übergeben.

Option 1: Übergeben Sie die PApplet Instanz in Ihrem Sound Konstruktor als Parameter, und dann diese Parameter in den SoundFile Konstruktor übergeben. Ihr Sound Konstruktor könnte wie folgt aussehen:

Sound(PApplet sketch){ 
    file = new SoundFile(sketch, "upNoise.wav"); 
} 

Dann in Ihrer Verarbeitung Skizze, können Sie die PApplet in Ihr Sound Konstruktor übergeben würden mit dem this Stichwort:

void setup(){ 
    Sound yourSound = new Sound(this); 
} 

Option 2: Seit Verarbeitung behandelt alle Klassen als innere Klassen, Sie könnten auch die etwas seltsame Syntax verwenden, indem Sie den Namen Ihrer Skizze verwenden, anstatt die this Ihrer Skizze zu übergeben:

Sound(){ 
    file = new SoundFile(YourSketchName.this, "upNoise.wav"); 
} 

Aber das ist ein wenig seltsam und wird in allen Fällen nicht funktioniert, so sind Sie wahrscheinlich besser dran, nur vorbei this in Ihrer Skizze.

Weitere Informationen finden Sie in the reference.

+0

Dank der ersten Option für mich gearbeitet! –

Verwandte Themen