Comunidad de diseño web y desarrollo en internet online

sonido.stop(); Me detiene TODOS los sonidos :S

Citar            
MensajeEscrito el 10 Mar 2009 09:24 am
Hola, estoy haciendo una aplicación flash dónde al pulsar teclas se reproducen varios sonidos (segun la tecla pulsada) [como si fuera un piano :) ]. De fondo también tengo un loop reproduciendose constantemente.

El problema está en que al dejar de pulsar una tecla el sonido se detiene correctamente pero también se detiene el loop. :o

Alguien sabe a que se debe?? O como puedo arreglarlo??

Aqui va el codigo:

Código :

// ESTE ES EL SONIDO DE FONDO (LOOP) //
_root.so_loop=new Sound(_level0);
_root.so_loop.attachSound("loop");
_root.so_loop.play();
_root.so_loop.start(0,999);

// AQUI DETECTO LA TECLA PULSADA Y EJECUTO LA FUNCIÓN "SONA" PARA QUE ME REPRODUZCA EL SONIDO QUE CORRESPONDE //

var listKey:Object = new Object();
listKey.onKeyDown = function () {
   if (Key.getCode() == 65 && _root.sonant==false) {sona("f1"); _root.sonant=true;}
   if (Key.getCode() == 83 && _root.sonant==false) {sona("f2"); _root.sonant=true;}
   if (Key.getCode() == 68 && _root.sonant==false) {sona("f3"); _root.sonant=true;}
   if (Key.getCode() == 70 && _root.sonant==false) {sona("f4"); _root.sonant=true;}
}

// CUANDO SE DEJA DE PULSAR LA TECLA EL SONIDO SE DETIENE //
listKey.onKeyUp = function () {
      _root.sonant=false;
      _root.so.stop();
}
Key.addListener(listKey);

// FUNCIÓN QUE ME REPRODUCE EL SONIDO CORRESPONDIENTE A CADA TECLA //

function sona(sonido:String){
   _root.so=new Sound(_level1);
   _root.so.attachSound(sonido);
   _root.so.play();
   _root.so.start(0,999);
}


A ver si alguien lo entiende y puede ayudarme!! ^^

Por bernattorras

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Mar 2009 10:43 am
Crea cada objeto Sound dentro de su propio MovieClip, sino los métodos y propiedades se mezclan entre todos los que comparten la misma línea de tiempo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Mar 2009 02:56 pm
Muchas gracias! :D

Estoy intentando hacerlo como dices, attacheandocada sonido a un movieClip concreto... pero me encuentro con lo mismo... Al detener uno de estos sonido, se me detienen todos... :shock:

Uso este código:

Código :

// EL SONIDO LOOP QUE SE REPITE DE FONDO

so_loop = new Sound(so_loop_mc);
so_loop.attachSound("loop");
so_loop.start(0,999);

// EL SONIDO QUE SE EJECUTA EN UN MOMENTO DETERMINADO

so_sonido1 = new Sound(so_sonido1_mc);
so_sonido1.attachSound("f1");
so_sonido1.start(0,999);

// CODIGO DENTRO DE UN BOTON PARA DETENER EL SONIDO 1

so_sonido1.stop();


Cuál es el problema? Que hago mal? :(

Por bernattorras

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Mar 2009 03:07 pm
Haz esta prueba: pon dos movieClips vacíos en el escenario, dentro de la línea de tiempo de cada uno creas los sonidos, luego para pararlo usas:

so_sonido1_mc.so_sonido1.stop();

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Mar 2009 03:55 pm
Gracias de nuevo Solisarg!

Me he precipitado a postear ya que antes que me respondieras he probado, como decias, a crear un nuevo movieClip en el escenario con el codigo:

Código :

fl1_1 = new Sound(this);
fl1_1.attachSound("f1");


y en el boton:

Código :

fl1.fl1_1.start(0,999);


De esta forma funciona perfectamente! ^^

El problema ahora esta en que me gustaría que al pulsar (y dejando pulsada) una tecla también se reproduciera el mismo sonido, pero me encuentro que al dejarla pulsada no para de empezar a reproducir el sonido constantemente mientras tengo pulsada la tecla, por lo que solo se oye la primera nota empezar y repitiendose infinitamente mientras la tecla esta pulsada.

Aqui esta el codigo:

Código :

var listKey:Object = new Object();
listKey.onKeyDown = function () {
   if (Key.getCode() == 65 && _root.sonando==false) {fl1.fl1_1.start(0,999); _root.sonando=true;}
}

listKey.onKeyUp = function () {
      _root.sonando=false;
      fl1.fl1_1.stop();
}

Key.addListener(listKey);


Cuál es el problema?? :?

Muchas gracias!

Por bernattorras

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Mar 2009 04:47 pm
Que se repite constantemente el onKeyDown, cancélalo y vuelvelo a habilitar en el onKeyUp. En realidad mejor aún, usa alguna variable que pases a true cuando esta sonando y a false cuando se para, luego si es true el onKeyDown no hace nada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Mar 2009 04:58 pm
Gracias de nuevo, pero esto es lo que ya estaba intentando... lo que no sé és donde falla... :?

Código :

var listKey:Object = new Object();
listKey.onKeyDown = function () {
   if (Key.getCode() == 65 && _root.sonando==false) {fl1.fl1_1.start(0,999); _root.sonando=true;}
}

listKey.onKeyUp = function () {
      _root.sonando=false;
      fl1.fl1_1.stop();
}

Key.addListener(listKey);


Cuando se pulsa una tecla, se comprueba si ya esta sonando (_root.sonando==true) y si no suena (_root.sonando==false) empieza a sonar y "_root.sonando" pasa a ser true; Una vez la tecla se deja de pulsar _root.sonando pasa a ser false.

Creía que funcionaría, pero veo que no... Qua hago mal? :?

Por bernattorras

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Mar 2009 05:08 pm
Perdona, me fije mal, el problema no es que repita constantemente la primera nota del sonido, sino que solo hace una nota. Supongo que al pulsar la tecla empieza a sonar pero no se mantiene hasta levantar la tecla... Al pulsar la tecla solo suena la primera nota...

Como puedo hacer que el sonido se mantenga hasta que levante la tecla? :P

Muchas gracias!

Por bernattorras

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 10:45 am
Agrega un trace a ver si se está disparando constantemente:

fl1.fl1_1.start(0,999);
trace("Inicio sonido")

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Abr 2010 08:23 am
Yo esto lo arreglo poniendo el parametro del nombre del sonido para paralo:

Código ActionScript :

fl1_1.attachSound("f1");
fl1_1.stop("f1");

Así, si tengo varios sonidos sonando a la vez, solo paro uno en concreto.

Por Almost_Chinese

15 de clabLevel



Genero:Masculino  

msie7

 

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