Salut,
Il n'y aucune raison pour que le nom du dossier de sources apparaissent dans un chemin de ressource. Essaye :
u1 = this.getClass().getClassLoader().getResource("/son/applaudissements.au");
Par ailleurs, entres autres :
- il n'est pas nécessaire que ta classe étende Thread : autant enlever le extends Thread.
- s1 ne devrait pas être static, surtout que u1 ne l'est pas, mais ça fonctionne parce que le chemin est en dur : avec un chemin en paramètre, tu auras des dysfonctionnement, si tu utilises plusieurs sons (plusieurs instances de Sound)
- Il est incohérent d'avoir des méthodes static et des méthodes non static qui manipule la même variable : si la variable est static, les méthodes de manipulation devrait l'être.
- inutile de stocker l'URL si tu n'en fait rien d'autre que la stocker
En résumé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Sound {
private final AudioClip audioClip; //le son créé depuis l'url
public Sound(String name) {
Url url = Sound.class.getResource("/son/"+name);
audioClip = Applet.newAudioClip(url);
}
public void jouer() {
audioClip.play();
}
public void jouerEnBoucle() {
audioClip.loop();
}
public void arreter() {
audioClip.stop();
}
} |
Mais il vaudrait mieux utiliser la classe Clip, qui n'est pas attachée à la notion d'applet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class Sound implements AutoCloseable {
private final Clip audioClip; //le son créé depuis l'url
public Sound(String name) {
final Url url = Sound.class.getResource("/son/"+name);
audioClip = AudioSystem.getClip();
audioClip.open(AudioSystem.getAudioInputStream(url));
}
public void jouer() {
audioClip.start();
}
public void jouerEnBoucle() {
audioClip.loop(Clip.LOOP_CONTINUOUSLY);
}
public void jouerPlusieursFois(int nb) {
audioClip.loop(nb);
}
public void arreter() {
audioClip.stop();
}
@Override
public void close() {
audioclip.close();
}
} |
Partager