Comunidad de diseño web y desarrollo en internet online

Apagar un solo sonido y los demas sigan oyendose

Citar            
MensajeEscrito el 17 Ago 2007 02:14 pm
Hi tengo un problema tengo estos codigos

Código :

//Este es para el agua 
var agua = new Sound();
Ambiente("Pozos");
function Ambiente(amb) {
   agua.attachSound(amb);
   agua.start(0, 999);
}
//Este es para el fuego
function Llamas(llama) {
   var fuego = new Sound();
   fuego.attachSound(llama);
   fuego.start(0, 999);
}

lo que quiero es que solo al decirle

Código :

agua.stop();

Quiero parar el sonido del agua solamente pero al ponerle este codigo me para los dos sonidos y eso que son variables diferentes imagino que le atribuyo al attach mi pregunta es como puedo hacer que solo se apage uno, ya hasta cree un archivo diferente y lo carge en un movie clip vacio y despues lo descargo y sigue el efecto de agua, :lol: no entiendo el porque si ya lo descargue, espero que me echen la mano saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

msie7
Citar            
MensajeEscrito el 17 Ago 2007 03:32 pm
Antes de todo una pregunta: ¿Cuando se definen variables adentro de funciones, que no se pueden manipular dentro de las mismas solamente?, en realidad no entiendo cual es la intención de usar una función para hacer lo de attachSound porque en dado caso serviría más si fuera algo así:

Código :

Ambiente("agua","Pozos");
function Ambiente(instancia,amb) {
   instancia.attachSound(amb);
   instancia.start(0, 999);
}

Porque así podrías usar la misma función para llamar el agua y el fuego pero en fin...

Te recomiendo que uses loadSound en lugar de attachSound porque si tu sonido pesa mucho va a recargar demasiado el primer frame de tu película causando que el loader(si es que tiene o que necesite) se tarde en salir y no aparezca desde 0, bueno, paso a la pregunta:

Con loadSound sería lo siguiente:

Código :

fondo.loadSound("musicafondo.mp3",false); //false para que no sea streaming

esto cargará el sonido en la variable fondo y si estuviera dentro de algún MC("animacion" en este caso) entonces la orden para que se detuviera en el botón sería así:

Código :

on(release){
   if (!valor){   
   _root.animacion.fondo.stop();
   valor = 1;   
   }else{
   _root.animacion.fondo.start();
   valor = 0;
      }
   }


La variable "valor" al inicio no está definida, por tanto es "undefined" lo que significa "false"(al menos no significa "true"), en fin, cuando detiene el sonido le asigna 1 a la variable valor para que la siguiente vez valor==1 entonces de el valor 0 y pase a ejecutar el else en donde se le asigna el valor de 0 para que de 1 y así sucesivamente.

Si no estoy mal este código lo podés utilizar con el attachSound que tenés ahorita, lo que sí tengo seguro es que con loadSound sí funciona pero valdrá la pena probar.

siempre es:

Código :

nombre.attachSound()

para asignarle las propiedades a una variable, espero que esto sirva de algo, hasta luego :)

Cualquier duda con la explicación definitivamente podés preguntar.

Por Rudy3001

69 de clabLevel



 

Por los grandes paisajes de Guatemala

firefox
Citar            
MensajeEscrito el 17 Ago 2007 06:34 pm
Gracias compa por responder el uso de las funciones independientes es para que un sonido entre despues de otro , despues de ejecutar una funcion y thanks ya lo resolvi solo tenia que darle el nombre de vinculacion a la biblioteca para poder pararlo asi

Código :

agua.stop("Pozos")


aunque un amigo me dijo que puedo hacerlo con un movie clip tambien caso que imagino que es como la solucion que me diste aunque el loadsound igual no lo probe pero no se si se pueda repetir un numero de veces como en el atachSound
Gracias
Saludos desde mexico

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

msie7
Citar            
MensajeEscrito el 17 Ago 2007 06:43 pm
me quede con la duda de este codigo

Código :

Ambiente("agua","Pozos");function Ambiente(instancia,amb) {   instancia.attachSound(amb);   instancia.start(0, 999);}

no me funcionaba digo para ahorrar codigo y solo le quite las comillas al nombre de instancia
una nueva cosa que aprendo
Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

msie7
Citar            
MensajeEscrito el 17 Ago 2007 09:43 pm
Te explico, había que hacer unos cambios en el código para que funcionara mejor pero te lo explico ahora que ya lo resolviste:

Código :

//Definición del tipo de variable
m1 = new Sound();
m2 = new Sound();
//inicialización de la función...
function Ambiente(amb:String,inst:Sound) {
   inst.attachSound(amb);
   inst.start(0,999);
}
/*Llamado de la función para cada sonido.. el primer parámetro es el identifier y el segundo la variable con la que se controla el sonido*/
Ambiente("sonido1",m1);
Ambiente("sonido2",m2);

Con esto ahorrás este código:

Código :

//Este es para el agua 
var agua = new Sound();
Ambiente("Pozos");
function Ambiente(amb) {
   agua.attachSound(amb);
   agua.start(0, 999);
}
//Este es para el fuego
function Llamas(llama) {
   var fuego = new Sound();
   fuego.attachSound(llama);
   fuego.start(0, 999);
}

Entonces tu código quedaría así:

Código :

//Definición del tipo de variable
agua = new Sound();
fuego = new Sound();
//inicialización de la función...
function Ambiente(amb:String,inst:Sound) {
   inst.attachSound(amb);
   inst.start(0,999);
}
/*Llamado de la función para cada sonido.. el primer parámetro es el identifier y el segundo la variable con la que se controla el sonido*/
Ambiente("Pozos",agua);
Ambiente("llama",fuego);

Y el código del botón sería:

Código :

on(release){
   if (!valor){   
   _root.agua.stop("Pozos");
   valor = 1;   
   }else{
   _root.agua.start("Pozos");
   valor = 0;
      }
   }

Con esto el sonido empezará al cargar la película y se detendrá o iniciará(desde el principio, no en donde se quedó) al darle click, sé que ya lo resolviste pero nunca está de más optimizar el código...
Muchos Éxitos...

Por Rudy3001

69 de clabLevel



 

Por los grandes paisajes de Guatemala

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.