Ich hab folgende Methode in einer Application und will verhindern das die Sounddatei mehrfach abgespielt wird:
Code:
public void playExplosion(){
Applet audioapplet=new Applet();
if (explodeclip==null){
File path=new File ("c:/Projects/sampledir/Sound/explode.wav");
try{
URL url_audio=path.toURL();
explodeclip=audioapplet.newAudioClip(url_audio);
explodeclip.play();
}catch (MalformedURLException e){
System.out.println("Umwandlung File in URL fehlgeschlagen");
}
}
}
Gibt es irgendeine Möglichkeit bei Samples (.wav) herauszufinden ob die noch abgespielt werden?
Bei Midi-Dateinen gibt es die isRunning-Methode, aber ich habe kein Equivalent dafür für Samples gefunden.
erstelle eine Lock variable.
wenn abgespielt wird ist diese true. dann kann nur abgespielt werden, wenn das andere beendet wird und die variable wieder auf false gesetzt wird.
Das ist doch im Prinzip nichts anderes als die Abfrage am Anfang
if (explodeclip==null)
nur als boolean.
Was bringt mich das jetzt weiter?
Ich muß die Variable ja irgendwann wieder auf null oder false setzen.
Dazu muß ich irgendwie erkennen das der Sample beendet um die Variable erst dann zu setzen.
Das bringt mich auf die anfangs gestellte Frage.
Gibt es eine Möglichkeit zu erkennen das ein Sample noch abgespielt wird oder nicht?
soweit ich das aus deinem Beitrag gelsen habe spielst du ja die wav's mit deinem Applet ab. also musst du auch wissen wan sie am spielen sind und wann nicht.
1. Du musst die audioapplet-Variable nicht anlegen, ween du nicht sonstwo brauchst, newAudioClip ist static.
2. AudioClip bietet keine Methode um festzustellenn ob der Sound noch läuft. Du könntest also z.B. das AudioClip-Objekt speichern und vor dem nächsten play() nochmal stop() aufrufen (das is aber net ganz der gewünschte effekt) oder das JMF benutzen.
Du hast die Frage nicht verstanden oder kennst dich mit Samples nicht so aus.
Warum beantwortest du dann die Frage?
@Illuvatar
Schade. Muß ich mir wohl doch nochmal JMF runterladen.
stop() ist auch eine Möglichkeit, dann wird der gerade abgespielte Sample zwar abgebrochen, dafür habe ich dann das Stottern durch mehrfaches gleichzeitiges Abspielen des gleichen Samples nicht.