hat jemand ne Ahnung wie ich Sounds per Buttonklick in einem Applet starten kann? Der Button ist schon erstellt, nur weiß ich nicht den Befehl zum öffnen der .wav datei.
hab bei mir das mal so gelöst, allerings weiß ich nicht, ob es bei einem Applet funktioniert. (hab keine Ahnung von Applets).
Bekomme auch die Meldung (...deprecated) wie auch immer, hier der Code. Funktionieren tut er bei mir.
Musst natürlich entsprechend anpassen.
Java:
publicvoidsoundKlatschen(){try{System.out.println("Sound abspielen wird aufgerufen");AudioClip ac =Applet.newAudioClip (newFile("Sound/Applaus.wav").toURL());
ac.play();}catch(Exception e){
e.printStackTrace();}}
@Fab1: Hast du deinen Code getestet? Ich glaube die Verwendung von File in einem Applet wird eine AccessControlException provozieren, weil dabei auf der Client-Festplatte gesucht wird.
In einem Applet besser immer über die CodeBase die Resourcen laden.
den Quellcode den du geschrieben hast öffnet die .wav Datei nachdem ich das Applet gestartet habe. Ich möchte aber einen Button in dem Applet erstellen und durch Buttonklick die .wav datei starten.
Trotzdem danke^^
Dann lade die .wav-Datei halt in der Applet-Init-Routine in eine Membervariable des Applets und führe die Play-Methode innerhalb des ActionListeners des Buttons aus. Beachte aber L-ectron-Xs Worte sehr kritisch, dein Applet funktioniert sonst nur lokal auf deinem Rechner und dort möglicherweise auch nur in der Entwicklungsumgebung.
Hm, das is schlecht. Ich hatte vor ein Nippelboard zu coden (Sowas wo Stefan Raab ständig drauf kloppt) und ich wollte das evtl nen paar Kollegen weiter schicken.
Hat jemand evtl mal nen funktionierenden Beispielcode für mich?
Würd mich freuen,
mfg
@Fab1: Hast du deinen Code getestet? Ich glaube die Verwendung von File in einem Applet wird eine AccessControlException provozieren, weil dabei auf der Client-Festplatte gesucht wird.
In einem Applet besser immer über die CodeBase die Resourcen laden.
Also zum Laden der .wavs benötigst du eine URL - etwas anderes extrahiert Fab1 selber auch nicht aus File - und vllt noch ergänzend den relativen Serverpfad der Datei.
Genau, so weit hab ich es bis jetzt,
jetz möchte ich nur noch beim klicken des Buttons im Applet die .wav datei gestartet bekommen.
Im Moment sieht es so aus :
Ui... das aber wahnsinnig neu in der Materie...
1. Eine Nippelklasse wäre nicht schlecht.
Java:
publicclassNippelextendsButton{privatefinalAudioClip ac;publicButton(String name,AudioClip ac){super(name);if(null== ac){thrownewIllegalArgumentException("AudioClip may not be null");}this.ac = ac;addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvent e){if(this== e.getSource()){
ac.play();}}}}}
2. Diese kann man in der Init-Methode des Applets wie folgt instanzieren.
Java:
Nippel n =newNippel("Nippel1",getAudioClip(getCodeBase(),"relPath/my.wav"));
[ot]Okay... der anonyme ActionListener mag vllt. unfein sein aber gut...[/ot]
[edit]@L-ectron-X: Zeile 14 in deinem Code... was ist das????:L ... okay vergiss das [/edit]
Dort wird das Ergebnis des getCodeBase()-Aufrufs (eine relative URL zum Applet) in eine neue URL gepackt, die Bezeichnung der zu ladenen Datei angehängt und damit der AudioClip geladen.
Die Klasse Nippel erweitert Button. Sie kann nun im Applet als solcher verwendet bzw. hinzugefügt werden.
Java:
<Applet>.add(/*(Button)*/ nippel1);
[ot]Was des macht ist eigentlich schon klar, jedenfalls nachdem ich nachgeschaut habe.
Mir kam das nämlich spanisch vor, weil ich diese Methode in der Eclipse-CV zunächst gar nicht fand und sie schliesslich ganz unten doch zu finden war. Kein Wunder, sie ist statisch. "okay, vergiss das" hat plötzlich doch eine völlig neue Bedeutung, findest du nicht? Zumindest gibt's 'ne Warnung: "The static method newAudioClip(URL) from the type Applet should be accessed in a static way"[/ot]