En este grupo En todos

Foro de Action Script



Ayuda reproduccion de audio en Accion Script 2.0

Jlianxx
Buenos Aires, Argent...
Escrito por Jlianxx
el 02/05/2009

Estuve practicando con botones que reproducen audio en Flash, un play/pause. Pero cuando quiero poner varios botones siempre me reproduce el mismo audio.
C omento como lo hice, y si alguno nota que algo en el procedimiento esta mal y me pude correjir seria de gran ayuda para mi. Muchas gracias

Primero cree los botones play y pause en el ilustrator y los exporte como jpg.
Los importe en el flash.
Luego cree un layer por cada boton que pensaba usar (13 en total), y en cada layer un movie clip (los llame boton1, boton2, boton3 ).

En cada movie clip cree 2 frame, uno para el boton play y otro para el boton pause, y a cada uno le asignaba el label segun el boton que correspondia, al boton1 le puse play1 y pause1, al boton2, play2 y pause2, y asi a los 13 botones que cree.
Luego desde la escena a cada movie clip que agregaba le asignaba el label Boton_btn(y el numero que le correspondia, Boton_btn1, 2, 3, etc)
Despues importe los sonidos y los vincule, los llame Sonido1, Sonido2, Sonido3... Y asi.
Finalmetne en el primero frame del boton 1 escribi este codigo.

//Primero declare dos variables, pausa y estado ; pausa para almacenar la posición donde esta la canción, y estado para saber en que estado se encuentra la canción, 1 si el sonido se está reproduciendo y 0 para el estado en que el sonido esté en pause*/

var pausa:Number = 0;
var estado:Number = 0;

//* Como no le puse ninguna acción al Movie Clip, para que no se reprodujera como loco, lo frenamos al comienzo*/

Boton_btn1. Stop();

//*Atache inmediatamente el sonido linkeado desde la biblioteca a una variable llamada: " misonido "*/
_root. OnLoad = function(){
misonido = new Sound();
misonido. AttachSound("Sonido1");
} //En el evento onPress ó cuando presione el botón/ Boton_btn1. OnPress = function (){
if (estado == 0){
misonido. Start(pausa/1000); //Una vez el sonido en play, cambie el estado a 1, ósea reproduciéndose/ estado = 1; //y finalmente cambiamos la apariencia del botón/ Boton_btn1. GotoAndStop("pause1");
} else { //*En caso de que no sea 0, significa que se esta reproduciendo la canción y quiero detenerla, primero calcule la posición donde se va a quedar en pause almacenándolo en la variable pausa */ pausa = misonido. Position; //detuve totalmente el sonido/
misonido. Stop(); //cambie el estado a 0, ósea sin sonido/
estado = 0; //cambie la apariencia del botón/ Boton_btn1. GotoAndStop("play1");
}
}

y asi a cada frame de cada boton le copie el mismo codigo y le cambiaba el label que le correspondia
por ejemplo en el frame del boton2

var pausa:Number = 0;
var estado:Number = 0;
Boton_btn2. Stop();
_root. OnLoad = function(){
misonido = new Sound();
misonido. AttachSound("Sonido2");
}
Boton_btn2. OnPress = function (){
if (estado == 0){
misonido. Start(pausa/1000);
estado = 1;
Boton_btn2. GotoAndStop("pause2");
} else {
pausa = misonido. Position;
misonido. Stop();
estado = 0;
Boton_btn2. GotoAndStop("play2");
}
}

el problema lo tengo cuando corro la pelicula, siempre me reproduce el sonido1
presione cualquier boton.

¿Por que puede ser que me suceda eso?
desde ya muchisimas gracias.

nuevamente muchisimas gracias por el tutorial que subiste, fue de gran ayuda.
y si podes ayudarme con esto te estare muy agradecido.

Julian

Juan Angarita Quintana
Tecnico en programacion de software se...
Escrito por Juan Angarita Quintana
el 12/10/2009

Ok mira el codigo aparentemente esta perfecto pero el error se debe a que estas usando una misma variable y la pones en el evento load del root por eso te carga el mismo archivo siempre. Ademas estas llamando sonidos desde la libreria, esta tecnica no es recomendable por varios factores:

1. Aumenta demasiado el tamaño del archivo SWF.

2. Ralentiza la carga del SWF.

3. La calidad del sonido disminuye demasido puesto que Flash solo admite sonidos internos no mayores de 16 bits.

Por lo tanto te recomiendo que en vez de llamar el archivo desde la biblioteca lo llames externamente.

Para ello debes usar el siguiente codigo:

Var sonido:Sound = new Sound();

Sonido. LoadSound("ruta_del_sonido. Mp3",false);

Nota: El parametro true indica si comenzara la reproduccion automatica imagino que no por eso lo puse false.

Espero haberte sido de ayuda

Nooke X Y
Madrid, España
Escrito por Nooke X Y
el 14/02/2010

Hola, a mi me ha sucedido lo mismo que a Jlianx (es decir, también he intentado crear varios botones para reproducir audios diferentes, y para lo cual he escrito el mismo código al que hace referencia Jlianx y, lógicamente me ha ocurrido lo mismo que a él, sólo reproduce un único sonido para todos los botones).
Después he visto la respuesta de Juan Angarita, pero no he solucionado mi problema, quizás esto se deba a que no he sabido donde ubicar el código facilitado dentro de Action Script.
Así agradecería me dijesen donde debo colocarlo, o si es posible puedan escribirme el código completo para que este funcione.
Agradezco de antemano su ayuda para poder resolver esta cuestión.