Comunidad de diseño web y desarrollo en internet online

Control audio y video

Citar            
MensajeEscrito el 06 Ago 2008 09:02 am
Buenas,
Expongo mi problema: tengo una peli que carga un video y distintas pistas de audio a lo largo de toda la reproducción. Necesito un botón de pausa. El problema es que consigo detener el video y la linea de tiempo, pero no el audio. Sí consigo silenciar el audio, pero al reproducir de nuevo el video empieza en el punto donde lo había pausado y el audio no. ¿Sería posible recoger en alguna variable el punto exacto donde para el audio e indicarle después que al reanudar la reproducción reproduzca el sonido desde ese punto?
Igual hay alguna manera más sencilla de hacerlo, pero ya no se me ocurren. He probado también a para la peli y stopAllSounds, pero luego al reproducir no consigo que suene.
¿Alguien me puede ayudar, por favor? estoy hecha un lío.
Gracias a todos,

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 10:02 am
Para pausar un sonido, tienes que capturar su posición y luego reiniciarlo desde ese punto, ek:

Código :

soundPosition = 0
pause_btn.onRelease = function():Void{
   soundPosition = mySound.position;
   mySound.stop();
}
play_btn.onRelease = function():Void{
   mySound.start(soundPosition)
}


mySound es el objeto sonido que estás manejando. Si lo estás usando sobre línea de tiempo, tendrás que cambiarlo para usar el objeto Sound

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ago 2008 10:02 am

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Ago 2008 10:53 am
Jorge, estoy siguiendo tus pasos, pero no consigo que funcione. El sonido no se reproduce en ningún momento. Igual no lo estoy haciendo bien:
soundPosition = 0
pause_btn.onRelease = function():Void{
soundPosition = paso1.position;
soundPosition = paso2.position;
soundPosition = paso3.position;
soundPosition = paso4.position;
soundPosition = paso4a.position;
soundPosition = paso5.position;
soundPosition = paso6.position;
soundPosition = paso7.position;
soundPosition = paso8.position;
soundPosition = paso9.position;
soundPosition = paso10.position;
paso1.stop();
paso2.stop();
paso3.stop();
paso4.stop();
paso4a.stop();
paso5.stop();
paso6.stop();
paso7.stop();
paso8.stop();
paso9.stop();
paso10.stop();
}
play_btn.onRelease = function():Void{
paso1.start(soundPosition)
paso2.start(soundPosition)
paso3.start(soundPosition)
paso4.start(soundPosition)
paso4a.start(soundPosition)
paso5.start(soundPosition)
paso6.start(soundPosition)
paso7.start(soundPosition)
paso8.start(soundPosition)
paso9.start(soundPosition)
paso10.start(soundPosition)
}

Entiendo que de esta manera me recogerá el valor de cada uno de los sonidos, se estén reproduciendo o no, y al darle al play volverán a la posición en la que estaban antes de pausar, no es asi? Qué hago mal?
Gracias

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 11:12 am
elchininet, gracias a ti también por tu respuesta, pero tampoco lo consigo utilizando tu programación.
Me estoy volviendo loca!!!

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 11:17 am
Algunas objeciones:

- ¿Paso1 a Paso10 son todos objetos Sound?
Paso1 = new Sound()
Paso1.attachSound("algunsonido")

- Estás sobreescribiendo 10 veces la variable soundPosition, considera usar variables distintas para cada uno

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ago 2008 11:31 am
Estoy tan atascada que ya no se ni las cosas que me estoy inventando.
Jorge, para no sobreescribir la variable tendría que hacerlo así?:
soundPosition1 = 1
soundPosition2= 1
soundPosition3 = 1
soundPosition4 = 1
soundPosition5 = 1
soundPosition6 = 1
soundPosition7 = 1
soundPosition8 = 1
soundPosition9 = 1
soundPosition10 = 1
pause_btn.onRelease = function():Void{
soundPosition1 = paso1.position;
soundPosition2 = paso2.position;
soundPosition3 = paso3.position;
soundPosition4 = paso4.position;
soundPosition4a = paso4a.position;
soundPosition5 = paso5.position;
soundPosition6 = paso6.position;
soundPosition7 = paso7.position;
soundPosition8 = paso8.position;
soundPosition9 = paso9.position;
soundPosition10 = paso10.position;
paso1.stop();
paso2.stop();
paso3.stop();
paso4.stop();
paso4a.stop();
paso5.stop();
paso6.stop();
paso7.stop();
paso8.stop();
paso9.stop();
paso10.stop();
}
play_btn.onRelease = function():Void{
paso1.start(soundPosition1)
paso2.start(soundPosition2)
paso3.start(soundPosition3)
paso4.start(soundPosition4)
paso4a.start(soundPosition4a)
paso5.start(soundPosition5)
paso6.start(soundPosition6)
paso7.start(soundPosition7)
paso8.start(soundPosition8)
paso9.start(soundPosition9)
paso10.start(soundPosition10)
}

Siento ser tan pesada.
Gracias de nuevo por la paciencia

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 11:40 am
Sip, lo puedes inicializar a 0 (¿por que 1?)
No contestaste la primera pregunta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ago 2008 11:52 am
Te vas a volver loca con tantos objetos sound, utiliza ciclos para ahorrarte trabajo:

Código :

var sonidos:Array= new Array("sonido_1", "sonido_2", "sonido_3");

for(var i:Number = 0; i < sonidos.length; i++){

    this["sonido" + (i + 1)] = new Sound();
    this["sonido" + (i + 1)].attachSound(sonidos[i]);

}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Ago 2008 12:11 pm
Voy,
Jorge, si paso 1 a 10 son los sounds y va todo bien. Los llamo en el primer frame y los coloco a cada uno donde deben empezar.
Los inicio a 1 porque no me he dado cuenta. Ahora los he puesto a 0 y tampoco. No consigo que se pare el sonido.

elchininet, entiendo lo que me dices, pero eso me funciona. Lo que necesito es que paren y se reproduzcan donde les corresponde y tienes razón: no es que me vaya a volver loca con tanto objeto sound, es que ya lo estoy. Necesito terminar esto ya.

Estoy atiborrada de tanto código y no soy capaz de pensar. Decidme por qué no me funciona, por favor. No se a quién más preguntar.
Sueno a desesperada, verdad? pues es así como estoy.

Gracias a los dos

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 12:21 pm
Lo que te puse fue un ejemplo solamente de como trabajar con muchos objetos y un ciclo, aplicalo con el consejo de solisarg solamente añadiendo lo que te puse en el link que me dijiste que no te sirvió, cuando le digas start divide los millisegundos entre 1000 para que obtengas los segundos de donde debes empezar a reproducir.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Ago 2008 12:55 pm
AAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaa, ahora si que lo estoy mezclando toooooodo!. Ya no se ni lo que me sobra. A ver, he intentado hacer un array (he comentado todos mis objetos sound para empezar de nuevo). Bien, llego a un punto que no se lo que me sobra de solisarg ni lo que me sobra de lo que me acabas de decir ni lo que me estoy inventando. Hasta aqui esto:

var sonidos:Array= new Array("paso1", "paso2", "paso3", "paso4", "paso4a", "paso5", "paso6", "paso7", "paso8", "paso9", "paso10");

for(var i:Number = 0; i < sonidos.length; i++){

this["sonido" + (i + 1)] = new Sound();
this["sonido" + (i + 1)].attachSound(sonidos[i]);

}
soundPosition = 0
pause_btn.onRelease = function():Void{
soundPosition = sonidos.position;
sonidos.stop();
}
play_btn.onRelease = function():Void{
sonidos.start(soundPosition)
}


var playSound:Boolean = true;
var pausa:Number;

boton.onPress = function():Void{

if(playSound){

pausa = sonidos.position;
sonidos.stop();
playSound = false;

}else{

sonidos.start(pausa / 1000, 0);
playSound = true;

}

}


Por favor, por favor, ahora tengo más lío que antes. Ya no se ni por dónde me da el aire!
Gracias

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 06 Ago 2008 01:18 pm
Dale formato a tus códigos con el botón "Code" que está en la parte superior cuando vas a escribir un mensaje.

Debe ser algo como esto:

Código :

var sonidos:Array= new Array("paso1", "paso2", "paso3", "paso4", "paso4a", "paso5", "paso6", "paso7", "paso8", "paso9", "paso10");

var pauses:Array = new Array();

for(var i:Number = 0; i < sonidos.length; i++){

    this["sonido" + (i + 1)] = new Sound();
    this["sonido" + (i + 1)].attachSound(sonidos[i]);
    this["sonido" + (i + 1)].start();

}

pause_btn.onRelease = function():Void{

    for(var i:Number = 0; i < sonidos.length; i++){

        pauses[i] = _root["sonido" + (i + 1)].position;
        _root["sonido" + (i + 1)].stop();

    }

}

play_btn.onRelease = function():Void{

    for(var i:Number = 0; i < sonidos.length; i++){

        _root["sonido" + (i + 1)].start(pauses[i] / 1000, 0);

    }

} 

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 07 Ago 2008 06:32 am
Gracias, gracias elchininet. Funciona!!!
Ahora tengo que solucionar una cosilla. Con esto, todos los sonidos comienzan y se paran a la vez y deben empezar cada uno en un frame determinado (hasta ahora lo tenia asi: "paso1_sound.start();" en el frame correspondiente y lo mismo con los demás). No se si puedo indicar en ese mismo código el lugar de arranque de cada sonido...

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 07 Ago 2008 11:57 am
Elimina la línea que dice:

Código :

this["sonido" + (i + 1)].start();


Pues esta hace que todos comiencen cuando corra el ciclo y en los frames correspondientes pones:

Código :

//---Ejemplo con el sonido 1
this.sonido1.start();


Que debe ser como lo tenías antes

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 07 Ago 2008 12:58 pm
Gracias, hasta ahí había llegado; ahora estoy con el play y el pause, que me hacen lo mismo. Consigo que se paren, pero vuelven a empezar desde el principio.

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 07 Ago 2008 01:06 pm
Haz una prueba, en la acción del botón de pausa pon esto:

Código :

pause_btn.onRelease = function():Void{

    for(var i:Number = 0; i < sonidos.length; i++){

        pauses[i] = _root["sonido" + (i + 1)].position;
        _root["sonido" + (i + 1)].stop();

    }

    trace(pauses);

}


Copia lo que te sale en el trace y postealo, deberían salirte todos los millisegundos que tenía cada canción en el momento que las detuviste.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Ago 2008 06:21 am
Este es el resultado de salida:

4481,0,0,0,0,0,0,0,0,0,0
1718,0,0,0,0,0,0,0,0,0,0
2090,0,0,0,0,0,0,0,0,0,0
2090,0,0,0,0,0,0,0,0,0,0
2020,0,0,0,0,0,0,0,0,0,0
1904,0,0,0,0,0,0,0,0,0,0
1904,0,0,0,0,0,0,0,0,0,0
5224,0,0,0,0,0,0,0,0,0,0

He ido hacia adelante y hacia atrás. Cuando pulso el play vuelve a iniciarse desde el principio. No se cómo debo usar esta información. Gracias por tu ayuda.

Por critrar

10 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 08 Ago 2008 10:57 am
Nada que el código que te puse supone que cuando presiones el pause todos los sonidos van a estar reproduciéndose, así que cuando presiones el play los que estaban detenidos empezarán a reproducirse desde el punto donde estaban cuando pulsaste pause, pues los que no estaban reproduciéndose su posición es cero en ese momento y el botón de play los va a reproducir desde ahi. Por lo tanto te los va a reproducir todos, estuvieran detenidos o reproduciéndose.

Para que esto no ocurra se debe incluir otro arreglo que chequee cuando un sonido se ha reproducido o nunca se ha reproducido, algo como esto:

Código :

var sonidos:Array = new Array("paso1", "paso2", "paso3", "paso4", "paso4a", "paso5", "paso6", "paso7", "paso8", "paso9", "paso10");

var pauses:Array = new Array();
var soundPlay:Array = new Array();

for (var i:Number = 0; i<sonidos.length; i++) {

   this["sonido"+(i+1)] = new Sound();
   this["sonido"+(i+1)].attachSound(sonidos[i]);

   soundPlay[i] = false;

}

pause_btn.onRelease = function():Void  {

   for (var i:Number = 0; i<sonidos.length; i++) {

      pauses[i] = _root["sonido"+(i+1)].position;
      _root["sonido"+(i+1)].stop();

   }

};

play_btn.onRelease = function():Void  {

   for (var i:Number = 0; i<sonidos.length; i++) {

      if (soundPlay[i]) {

         _root["sonido"+(i+1)].start(pauses[i]/1000,0);

      }

   }

};


Solamente tienes que llamar a los sonidos de la misma manera pero guardar en el arreglo que el sonido ya comenzó a reproducirse:

Código :

//---Ejemplo con el sonido 1
this.sonido1.start();
soundPlay[0] = true;

//---Ejemplo con el sonido 2
this.sonido2.start();
soundPlay[1] = true;

//---Ejemplo con el sonido 3
this.sonido3.start();
soundPlay[2] = true;

//---Y asi susecivamente

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Ago 2008 12:21 pm
YA ESTÁ!!!
por fin parece que le doy carpetazo a esto. He conseguido terminarla con algo parecido a lo que me has indicado.
Muchísimas gracias por tu ayuda, de verdad.
Saludos

Por critrar

10 de clabLevel



Genero:Femenino  

firefox

 

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