Comunidad de diseño web y desarrollo en internet online

Variables de funcion dentro de eventos

Citar            
MensajeEscrito el 05 Ago 2008 10:39 am
Quiero que la variable "fin" de la funcion "opacidadMc" me devuelva true cuando se termine de realizar el evento onEnterFrame, el código siguiente es como lo intento hacer yo pero evidentemente está mal porque siempre me devuelve false, cómo lo podría corregir?
Gracias de antemano!

Código :

function opacidadMc(mc:MovieClip):Boolean {
   mc._alpha = 100;
   var fin:Boolean = false;
   
        mc.onEnterFrame = function(fin)  
        {
                var difAlpha:Number = (this._alpha-0)*.25;
                this._alpha -= difAlpha;
      
                if (this._alpha<=0) {
                       delete this.onEnterFrame;
                       this._alpha = 0;
                       fin = true;
                }
        };
         
        if (fin)
             return true;
}
[/code]

Por akados

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2008 11:03 am
No, no te lo devolverá de esta manera, date cuenta que la función opacidadMc desde que la ejecutas espera devolver un boolean, bueno ella hace todo lo que hay dentro de ella y seguidamente trata de devolver el true o el false y se encuentra con la condición y como la variable todavía no es true, entonces te devuelve false.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 05 Ago 2008 11:10 am
Es cierto lo que dices y he ahí mi problema, no sé como solucionarlo pues lo que me interesa es que la funcion me devuelva el valor de la variable "fin" pero dentro del "onEnterFrame", tienes alguna sugerencia de si lo debería de hacer de otra forma o que debería modificar para conseguir solucionarlo?

Por akados

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2008 11:37 am
Lo mejor es hacer un watch a un objeto, para saber cuando la opacidad llegó a cero:

Código :

var watchObject:Object = new Object();
watchObject.watch("alpha",alphaChecker,0);

function alphaChecker(prop:String, oldV:Number, newV:Number, alphaLimit:Number):Void {

   if (newV<=alphaLimit) {

      trace("El alpha llegó a "+alphaLimit);
      delete _root.mc.onEnterFrame;

   }
}

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());

function opacidadMc(mc:MovieClip):Void{

   mc._alpha = 100;
   mc.onEnterFrame = function():Void {

      var difAlpha:Number = (this._alpha-0)*.25;

      this._alpha -= difAlpha;
      
      watchObject.alpha = this._alpha;

   };

}

opacidadMc(mc);

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 05 Ago 2008 02:40 pm
Perfecto! No conocía lo del objeto watch, la verdad es que estoy empezando con AS así que es normal que no conozca na xd
Pero mil gracias elchininet, me ha funcionado de maravilla :)

Por akados

8 de clabLevel



 

firefox

 

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