Está usted en Indice > Programas > Diseño > Flash > Lecciones y Paso a Paso > Controlar el volumen de varios sonidos de modo independiente en Flash
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Controlar el volumen de varios sonidos de modo independiente en Flash

Debido a un bug que arrastra Flash desde sus primeras versiones, si definimos varios sonidos en la misma línea de tiempo y luego deseamos controlar su volumen de manera autónoma con ActionScript nos encontraremos con una desagradable sorpresa ¡¡¡no podemos!!!

Al modificar el nivel del volumen de uno de los sonidos con el método setVolume escucharemos como se modifica el volumen de todos a la vez.

Siguiendo la documentación de Flash, y suponiendo que tenemos dos sonidos en nuestra biblioteca del documento abierto, y que estos sonidos tienen activada la opción de vinculación en exportar con sus respectivos identificadores, este código debería funcionar bien:

var grillos_snd:Sound=new Sound();
var pajaros_snd:Sound=new Sound();
grillos_snd.attachSound("grllos");
pajaros_snd.attachSound("grllos");
grillos_snd.start(0, 5000);
pajaros_snd.start(0, 5000);
pajaros_snd.setVolume(20); // aquí es donde falla, se establece el volumen a 20 para los dos sonidos

El modo de solucionarlo es definir cada sonido para una línea de tiempo diferente pasando un clip como parámetro en la función constructora de cada objeto Sound, es decir:

var miSonido:Sound= new Sound( parametro_clip );

Podemos automatizar esto con con la función siguiente de ActionScript 2.0, donde le pasamos como parámetro el identificador del sonido en la biblioteca:

function crearSonido(identificador:String):Sound {
var clip:MovieClip = this.createEmptyMovieClip("contenedor"+this.getNextHighestDepth(), this.getNextHighestDepth());
var sonido:Sound = new Sound(clip);
sonido.attachSound(identificador);
return sonido;
}

Un ejemplo de uso, teniendo la función definida, sería:

var grillos_snd:Sound = crearSonido("grillos");
var pajaros_snd:Sound = crearSonido("pajaros");
grillos_snd.start(0, 5000);
pajaros_snd.start(0, 5000);
grillos_snd.setVolume(20); // ahora sí que controlamos los dos
pajaros_snd.setVolume(70); // sonidos de modo independiente

Con esta función en lugar de definir un sonido con var miSonido:Sound=new Sound(); y luego hacer el attachSound, lo que hacemos es usar var miSonido:Sound = crearSonido("identificador_en_biblioteca");




Autor: tutoriales-flash.com
http://www.tutoriales-flash.com/truco.asp?id_truco=24

Usuarios que han visto este tema también han visto...

- Precarga sin ActionScript en Flash
- Tutorial para crear un pop-up en Flash - Version 2.0
- Cómo crear un reproductor de MP3 en Flash y ASP
- Creación de un juego de pistolas en Flash
- Suavizado de imágenes cargadas dinámicamente en Flash


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 04-12-2008 a las 02:25:49