Bonjour, un nouveau problème mais c'est les profs qui ont loupés un truc cette fois.
En gros quand on appelle cette ligne de commande dans notre programme : SoundEffect.PASTILLE.play();
cela fait un son. Mais le problème c'est qu'il ne le fait qu'une fois... si le programme repasse sur cette ligne, le son n'est plus joué. (sous Linux, pas de problème sous Windows normalement)
voila le code de la classe qui gère le son.
Code :
- import java.io.*;
- import javax.sound.sampled.*;
- import java.net.URL;
- public enum SoundEffect
- {
- PASTILLE ( "./sons/pastille.wav" ),
- PERDU ( "./sons/perdu.wav" );
- public static enum Volume{ MUTE, LOW, MEDIUM, HIGH }
- public static Volume volume = Volume.LOW;
- private Clip clip;
- SoundEffect( String source)
- {
- try
- {
- URL url = this.getClass().getClassLoader().getResource(source);
- AudioInputStream stream = AudioSystem.getAudioInputStream(url);
- AudioFormat format = stream.getFormat ();
- DataLine.Info info = new DataLine.Info (Clip.class, format );
- clip = (Clip) AudioSystem.getLine (info);
- //clip = AudioSystem.getClip();
- clip.open (stream);
- }
- catch(Exception e)
- {}
- }
- public void play()
- {
- if ( clip.isRunning() )
- clip.stop();
- clip.setFramePosition(0);
- clip.start();
- }
- static void init()
- {
- values();
- }
- }
|
Merci.
Message édité par valoutux le 20-01-2011 à 23:40:24