Sto creando un mio gioco in java riguardo il biliardo...ad esso ho aggiunto anche i suoni che vengono emessi agli urti tra le palline...per riprodurre questi suoni ho implementato (e uso) questo algoritmo :
codice:
public synchronized void suona () {
try {
File f = new File(getClass().getResource("/jpool/music/hit.wav")).toURI());
AudioFormat af = AudioSystem.getAudioFileFormat(f).getFormat();
ais = AudioSystem.getAudioInputStream(f); DataLine.Info info = new DataLine.Info(Clip.class,ais.getFormat(), (int) ais.getFrameLength());
ol = (Clip) AudioSystem.getLine(info);
if (!ol.isOpen()) {
ol.open(ais);
}
ol.loop(0);
}
catch (LineUnavailableException ex) { Logger.getLogger(Tavolo.class.getName()).log(Level.SEVERE, null, ex);
}
catch (UnsupportedAudioFileException ex) { Logger.getLogger(Tavolo.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) { Logger.getLogger(Tavolo.class.getName()).log(Level.SEVERE, null,ex); } catch (URISyntaxException ex) { Logger.getLogger(Tavolo.class.getName()).log(Level.SEVERE, null, ex); } }
dove "hit.wav" è il file musicale da riprodurre , e ogni volta che devo far suonare richiamo il metodo "suona ()"
Questo metodo funziona ma mi sembra molto dispendioso , infatti quando avvengono molti urti simultanei (tipo quando si sboccia) il gioco viene un po' rallentato a causa della riproduzione di questi numerosi suoni...
Arrivo al dunque , come potrei implementare il metodo suona in modo più efficiente e soprattutto meno dispendioso???