Java Networking: URL's to Local Files
A continuación se muestra el código fuente de SoundTest completo:
package com.edu4java.minitennis7; import java.applet.Applet; import java.applet.AudioClip; import java.net.URL; public class SoundTest { public static void main(String[] args) throws Exception { // System.out.println("1"); // URL url = new URL("http://www.edu4java.com/es/game/sound/back.wav"); // System.out.println("2"); // AudioClip clip = Applet.newAudioClip(url); // System.out.println("3"); // clip.play(); // System.out.println("4"); // Thread.sleep(1000); // URL url = new URL( // "file:/C:/eclipseClasic/workspace/minitennis/src/com/edu4java/minitennis7/back.wav"); URL url = SoundTest.class.getResource("back.wav"); AudioClip clip = Applet.newAudioClip(url); AudioClip clip2 = Applet.newAudioClip(url); clip.play(); Thread.sleep(1000); clip2.loop(); Thread.sleep(20000); clip2.stop(); System.out.println("end"); } }De esta forma el archivo back.wav se obtienen desde el classpath. El classpath es el conjunto de directorios y archivos *.jar desde donde nuestro programa puede leer las clases (archivos *.class).
Una ventaja de esta metodología es que sólo tenemos que indicar la posición del archivo con respecto a la clase que lo usa. En nuestro caso como está en el mismo paquete basta con el nombre "back.wav". Otra ventaja es que los archivos de sonido se pueden incluir en un archivo *.jar. Veremos más sobre archivos *.jar más adelante. Una ves que tenemos el objeto URL podemos crear objetos AudioClip usando Applet.newAudioClip(url).
AudioClip clip = Applet.newAudioClip(url); AudioClip clip2 = Applet.newAudioClip(url);El objeto AudioClip tiene un método play() que inicia un thread independiente que reproduce sólo una vez el audio contenido en el archivo. Para reproducir el audio en forma repetitiva podemos usar el método loop() de AudioClip que reproducirá el sonido una y otra vez hasta que se llame al método stop sobre el mismo objeto AudioClip.
Dos audioClips pueden reproducirse al mismo tiempo. En el ejemplo creo dos audioClips con el mismo audio: clip y clip2. Reproduzco clip con play, espero un segundo Thread.sleep(1000) y reproduzco clip2 con loop. El resultado es una mezcla de los dos audios. Por ultimo después de 20 segundos Thread.sleep(20000) llamo a clip2.stop() y detengo la repetición de clip2.
fdffff
ResponderEliminar