Salve a tutti. Il mio problema è relativo alla riproduzione di un file wav alla pressione di un tasto che deve essere premuto in più occasioni durante il gioco.
Sto utilizzando una classe "Sound" che fa uso delle Clip:
codice:
public Sound (String musica) {
url=musica;
sound=new File(url);
time=100;
try{
aff=AudioSystem.getAudioFileFormat(sound);
ais=AudioSystem.getAudioInputStream(sound);
af=aff.getFormat();
info=new DataLine.Info(Clip.class,ais.getFormat(),((int)ais.getFrameLength()*af.getFrameSize()));
ol=(Clip)AudioSystem.getLine(info);
ol.open(ais);
}catch(UnsupportedAudioFileException ee){ee.printStackTrace();}
catch(IOException ea){ea.printStackTrace();}
catch(LineUnavailableException LUE){LUE.printStackTrace();};
}
public void playLoop() {
try {
ol.loop(Clip.LOOP_CONTINUOUSLY);
}catch(Exception ea){
System.out.println("suono interrotto");
}
}
public synchronized void playAudioFile() {
ol.start();
}
public synchronized void ferma() {
ol.stop();
}
Praticamente se all'interno dell'evento metto:
codice:
suonoDadi=new Sound("grafica/suoni/tiro_dadi.wav");
suonoDadi.playAudioFile();
il problema (o almeno credo sia un problema) è che ogni volta che si preme il tasto si alloca di volta in volta nuova memoria. Se invece metto la new nel costruttore e chiamo playAudioFile() all'interno dell'evento, riproduce il suono solo la prima volta che si preme il bottone e le successive rimane muto.
Cosa può essere???