Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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.
@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 :
Java:
public void init(){
button = new Button("Nippel1");
add(button);
try {
AudioClip sound1 = Applet.newAudioClip (new File ("/home/timo/workspace/Hallo2/Nippelboard/nippelsounds/nippelneu1_watt.wav").toURL());
sound1.play();
} catch(Exception e) {
e.printStackTrace();
}
Ui... das aber wahnsinnig neu in der Materie...
1. Eine Nippelklasse wäre nicht schlecht.
Java:
public class Nippel
extends Button
{
private final AudioClip ac;
public Button(String name, AudioClip ac)
{
super(name);
if(null == ac) {
throw new IllegalArgumentException("AudioClip may not be null");
}
this.ac = ac;
addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(this == e.getSource()) {
ac.play();
}
}
}
}
}
2. Diese kann man in der Init-Methode des Applets wie folgt instanzieren.
Java:
Nippel n = new Nippel("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]