Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 05-jul-2008, 13:59   #1 (permalink)
yundi ha deshabilitado el karma
 
Fecha de Ingreso: julio-2008
Mensajes: 1
Audio solapado en java

Hola a todos, estoy intentando hacer una aplicación en java similar a una batería de música, de tal modo que cuando haga click con el ratón se reproduzca un fichero de audio correspondiente a un bombo, por ejemplo.

Hasta ahí todo funciona correctamente, el problema viene cuando hago dos clicks de ratón muy seguidos, entonces solamente reproduce el fichero la primera vez, y no responde correctamente a todos los clicks de ratón que hago. ¿Cómo lo puedo solucionar?

Aquí pongo un fragmento de código por si puede ayudar en algo:

Cita:


/*Clase MouseListener: */

class MouseListener extends MouseAdapter implements MouseMotionListener{
public void mouseClicked(MouseEvent e){

if (e.getButton() == e.BUTTON1){

System.out.println("Se ha pulsado el botón 1");
Main.getSoundCache().playSound("Bombo.wav");

}
}


/*El método que usamos del Main:*/
public class Main{
private static SoundCache soundCache;

public Main(){
soundCache = new SoundCache();
[...]
}

public static SoundCache getSoundCache(){
return soundCache;
}


/*El método que usamos de la clase SoundCache:*/
public class SoundCache extends ResourceCache{

public AudioClip getAudioClip(String name){
return (AudioClip) getResource(name);
}

public void playSound(final String name){
new Thread(
new Runnable(){
public void run(){
getAudioClip(name).play();
}
}
).start();
}
}

/*Finalmente, la clase padre de la que hereda SoundCache:*/
public abstract class ResourceCache {

protected HashMap resources;

public ResourceCache(){
resources = new HashMap();
}

protected Object loadResource(String name){
URL url = null;
url = getClass().getClassLoader().getResource(name);
return loadResource(url);
}

protected abstract Object loadResource(URL url);

protected Object getResource(String name){
Object res = resources.get(name);
if(res == null){
res = loadResource("res/"+name);
resources.put(name, res);
}
return res;
}
}
Este mismo código me ha resultado efectivo en otras ocasiones, pero no en esta, puesto que no me reproduce 2 veces simultáneas el mismo archivo de sonido, ya que espera a que termine la primera reproducción para empezar la segunda.
¿Qué puedo hacer?

Un saludo y muchas gracias!!

Gonzalo.
yundi está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 10:13.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93