Comunidad de diseño web y desarrollo en internet online

Una duda tecnica en tutorial de sonido

Citar            
MensajeEscrito el 25 Ene 2006 12:28 am
Realizando una combinación de los tutoriales Boton play-pausa para sonido y crear un sonido permanente (loop) me surgio un problema que aunque ya lo solucione me gustaria que alguien me explicara el por que de la solución, la cosa es mas o menos asi: uso el codigo del tutorial del boton (en adelanteT1) para controlar un loop permanente (en adelante T2), se me ocurrio poner el codigo del T2 donde el de el T1 carga el sonido, pero la asignacion de la variable sound de T2 no me funciona,

Código :

var sonido:Sound = new Sound();
, entonces decidi ponerle la asignación de T1,

Código :

misonido = new Sound();
y funciona perfecto, por que si T2 funciona solo, al usarlo de esta manera la asignacion de la variable no funciona? muchas gracias :wink:

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox
Citar            
MensajeEscrito el 25 Ene 2006 04:15 am
No entendi tu duda, ni nada, si pusieras todo el codigo que no funciona y luego como lo arreglaste sería más fácil despejar tu duda... Ahora si me preguntas cual es la manera más CORRECTA de crear una variable Sound te digo y aseguro que es la primera :P

Código :

var sonido:Sound = new Sound();



saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 27 Ene 2006 01:46 pm
gracias por la respuesta, el codigo es el siguiente:

Código :

/* Primero declaramos dos variables, pausa y estado; pausa nos servirá
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 = 1;
/* Como no le pusimos ninguna acción al Movie Clip, para que no se reprodujera
como loco, lo frenamos al comienzo*/
Boton_btn.stop();
/*Atachamos inmediatamente el sonido linkeado desde la biblioteca a una variable
llamada: "misonido"*/
_root.onLoad = function(){
    //misonido = new Sound();         estas declaraciones las comento para que
    //misonido.attachSound("Sonido");   se cargue el sonido con el codigo de loop permanente
   
   //-----------inicio codigo loop permanente---------------------------
   
   /* Esta es una variable que nos permitirá saber si ya iniciamos el código del loop
   infinito para impedir repetición de loops */
if (noRepeat == undefined) {
   //Aqui la declaramos para que no vuelva a ser "undefined" y este código se ejecute
   //una vez aunque la línea de tiempo vuelva a este KeyFrame
   var noRepeat:Number;
   noRepeat = 1;
   //Creamos una nueva variable de tipo sonido
   //var sonido:Sound = new Sound();   esta variable queda comentada pues con esta
                              //forma no funciona
   misonido = new Sound();      //de esta forma si funciona!!!
   //Le adjuntamos el sonido que declaramos en la librería como "Sonido"
   misonido.attachSound("Sonido");
   //Le decimos, que si el sonido ya se termino de ejecutar
   misonido.onSoundComplete = function() {
      //Vuelva a arrancarlo
      this.start();
   };
   //Iniciamos el sonido
   misonido.start();  //anulo esta linea para controlar el sonido con el botón
}
   //-----------fin codigo loop permanete-------------------------------
}
//En el evento onPress ó cuando presione el botón
Boton_btn.onPress = function (){
    if (estado == 0){
        /* se verifica en que estado se encuentra el sonido, si está en 0, ósea el sonido no se esta reproduciendo,
        ponemos play al sonido; usamos la variable de pausa que contiene
        lo que lleva la canción reproducida hasta el momento en milisegundos, por eso lo dividimos entre 1000;
        para que nos de exactamente la posición donde se encuentra*/
        misonido.start(pausa/1000);
        //Una vez el sonido en play, cambiamos el estado a 1, ósea reproduciéndose
        estado = 1;
        //y finalmente cambiamos la apariencia del botón
        Boton_btn.gotoAndStop("play");
    } else {
        /*En caso de que no sea 0, significa que se esta reproduciendo la canción y 
        queremos detenerla, primero calculamos la posición donde se va a quedar en pause
        almacenándolo en la variable pausa*/
        pausa = misonido.position;
        //detenemos totalmente el sonido
        misonido.stop();
        //cambiamos el estado a 0, ósea sin sonido
        estado = 0;
        //y finalmente cambiamos la apariencia del botón
        Boton_btn.gotoAndStop("pause");
    }
}
en la parte donde se declara la variable sound estan las dos declaraciones, con la que funciona y la que no (es la que esta comentada), solo quiero saber por que ese comportamiento, muchas gracias nuevamente..

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox
Citar            
MensajeEscrito el 27 Ene 2006 02:48 pm
Saca esta linea del evento onLoad y pruebas ;)

Código :

var sonido:Sound = new Sound();



Lo que pasa es que lo estas haciendo como deberías :lol: y bueno flash no se queda atrás y tambien lo toma como debe :lol: , ok vamos serio, es decir, lo estas declarando como una variable local del evento onLoad al ponerle el var, al salir de alli se pierde esa variable por lo que no responde a las invocaciones que tú haces.

saludos ^^

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 27 Ene 2006 05:39 pm

Código :

var pausa:Number = 0;
var estado:Number = 1;
var sonido:Sound = new Sound();
Boton_btn.stop();
_root.onLoad = function(){
    
   //-----------inicio codigo loop permanente---------------------------
   
if (noRepeat == undefined) {
   var noRepeat:Number;
   noRepeat = 1;
   misonido.attachSound("Sonido");
   misonido.onSoundComplete = function() {
      this.start();
   };
   misonido.start();
}
   //-----------fin codigo loop permanete-------------------------------
}
Boton_btn.onPress = function (){
    if (estado == 0){
        misonido.start(pausa/1000);
        estado = 1;
        Boton_btn.gotoAndStop("play");
    } else {
        pausa = misonido.position;
        misonido.stop();
       estado = 0;
        Boton_btn.gotoAndStop("pause");
    }
}

nop, asi tampoco jala... pero en otro post vi un codigo similar donde la declaracion esta fuera y la funcion tambien esta fuera, aunque aun no pruebo si funciona, me imagino que si, seria como tu dices, de todas formas queria saber por que... muchas gracias

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox

 

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