Je joue avec succès les sons dans un jeu d'applet Java (1.5) en utilisant le code suivant:Comment jouer des sons dans les jeux Java?
// get an available clip to play it
Clip clip = null;
for (Clip clipTemp : players) {
if (!clipTemp.isOpen()) {
clip = clipTemp;
break;
}
}
if (clip == null) {
// no available player found, don't play
return;
}
clip.open(audioFormat, audioByteData, 0, audioByteData.length);
clip.start();
(Les joueurs sont une liste de clips que j'ouvert au début dans le but de réduire les temps d'attente, une ligne l'écouteur ferme la ligne lorsque l'événement stop est récupéré.)
Le problème auquel je suis confronté est le retard intermittent de 1 seconde lors de la lecture d'un son. C'est plutôt pauvre.
Y at-il un moyen d'améliorer cela? Est-ce que SourceDataLines
vaut la peine d'être pris en compte?
Salut - merci pour votre réponse. Le même son pourrait être requis pour être joué plusieurs fois. Suggéreriez-vous une sorte de regroupement de plusieurs clips pour chaque effet sonore avant la main? – Pool
Ouais - J'implémente habituellement une classe singleton 'SoundManager' qui charge tous les clips. Le code ci-dessus jouera le son plusieurs fois, mais réinitialisera le clip à chaque fois. Si vous voulez dire jouer 5 du même son, mais le mélanger à des intervalles légèrement différents, je suggère de vous essayer de charger 5 clips, puis quand vous appelez playSFX() incrémenter un compteur qui pointe vers le prochain clip à jouer . – JSmyth
@JSmyth Je fais quelque chose comme ça, mais si j'ouvre plusieurs AudioInputStream du même fichier son, je commence à obtenir LineUnavailableException. Pouvez-vous jeter un coup d'oeil à ma question? http://stackoverflow.com/questions/20184650/why-am-i-getting-this-lineunavailableexception – trusktr