Comunidad de diseño web y desarrollo en internet online

Un raro Problema descubierto en Action Script 2 - float

Citar            
MensajeEscrito el 10 Jun 2009 10:42 pm
Hola muchachos soy nuevo en la comunidad.

Estoy haciendo una galeria flotante, para eso debi crear un mc "flotante" y meterle dentro en el primer frame;

Código ActionScript :


//codigo DE "FLOTACION"//

stop();
// COrdenadas de Origen
orig_x = this._x;
orig_y = this._y;

// Profundidad Asignada
profundidad = 145; // ajustar el valor

// Ajustamos su posición Z en la escena
this.swapDepths( profundidad );

onEnterFrame = function(){
// Obtenemos la ordenada X de destino
dest_x = ( ( ( 450 - _root._xmouse ) / 450 ) * profundidad ) + orig_x;
]// Obtenemos el incremento de movimiento en X
incr_x = ( dest_x - this._x ) / 10;
// Ajustamos la posición en X
this._x += incr_x;

// Obtenemos la ordenada Y de destino
dest_y = ( ( ( 300 - _root._ymouse ) / 300 ) * profundidad ) + orig_y;
// Obtenemos el incremento de movimiento en Y
incr_y = (dest_y - this._y ) / 10;
// Ajustamos la posición en X
this._y += incr_y;
}


dentro de este movie clip tengo otro mc que me carga una foto desde una carpeta llamada "images" esta dentro del mc "flotante" anterior para que la imagen cargada en el movie clip contenedor tenga el efecto "flotador".

este mc "cargador" tiene dentro el sig codigo:

Código ActionScript :

loadMovie("images/imagen2.jpg", this);
_xscale = 50;
_yscale = 50;
//el valor inicial de la carga lo puse en 50 para que la imagen este a la mitad de tamaño//


Volvamos al mc "flotante" pues en el frame 1 de este mc puse 2 funciones que quiero que tengan los mc "cargadores" de imagenes.
Las funciones son las siguientes:

Código ActionScript :

//Funcion de rezize de imagen para mostrarla al 100% del tamaño//-------------------------//
MovieClip.prototype.redimensionar = function(ancho, alto, aceleracion) {
   this.onEnterFrame = function() {
      this._width += (ancho-this._xscale)/aceleracion;
      this._height += (alto-this._yscale)/aceleracion;
      if (Math.abs(ancho-this._xscale)<0.5 && Math.abs(alto-this._yscale)<0.5) {
         this._xscale = ancho;
         this._yscale = alto;
         delete this.onEnterFrame;
      }
   };
};

//fade--Pasar de transparencia a full color y viceversa---///-----//

function fade(mc:MovieClip, setTo:Number, v:Number) {
   mc.onEnterFrame = function() {
      //trace("fadeIn: "+this._alpha);
      newAlpha = setTo;
      alphaChange = newAlpha-this._alpha;
      alphaMove = Math.round(alphaChange/v);
      this._alpha += alphaMove;
      if (Math.ceil(alphaMove) == setTo || Math.floor(alphaMove) == setTo) {
         this._alpha = setTo;
         delete this.onEnterFrame;
      }
   };
}



Todo va muy bien hasta acá.
pero al poner el codigo en un boton que activa las funciones deja de servir alguna de las 2.

este es el codigo de activacion:

Código ActionScript :

on (rollOver) {
   fade(foto,100,5);// hace que la foto pase a opacidad 100%//
   foto.redimensionar(100,100,3);//redimensiona o reziza la imagen a escala 100%//
}
on (rollOut) {
   fade(foto,10,5);//hace que la imagen vuelva a su estado inicial de _alpha = 10//
   foto.redimensionar(50,50,5);//hace que la imagen vuelva a tener el tamaño a escala 50/50//
}


Cual podria ser la solucion?? pues la gracia de esta galeria es que al pasar el mouse encima del boton transparente que se encuentra encima de la foto esta se vuelva de tamaño 100% y de opcaidad 100% y al quitar el mouse de encima vuelvan la escala y la opacidad a sus valores por defecto.

CUALQUIER COLABORACION SERÁ BIENVENIDA.

Por Thrasherskin

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Jun 2009 11:03 am
Es un poco largo el POST, pero entiendo que las dos funciones usan el mismo onEnterFrame (fade y redimensionar), con lo cual es lógico que una pise a la otra

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jun 2009 03:01 pm
Muchas Gracias por la respuesta.

Lo entiendo hice tu Aclaración e implemente el siguiente codigo que la verdad trabaja mucho mejor en escalar la imagen pues me resulto con un poco de easing muy bueno y estilizado. pero sigo sin obtener que cambie el alpha a 100 y viceversa:

Código ActionScript :

MovieClip.prototype.redfade = function(mc:MovieClip, ancho, alto, setTo:Number, v:Number) {
   mc.onEnterFrame = function() { 
      this._xscale += (ancho-this._xscale)/v; 
        this._yscale += (alto-this._yscale)/v;
      newAlpha = setTo;
      alphaChange = newAlpha-this._alpha; 
         alphaMove = Math.round(alphaChange/v); 
            this._alpha += alphaMove;
          if (Math.abs(ancho-this._xscale)<0.5 && Math.abs(alto-this._yscale)<0.5(Math.ceil(alphaMove) == setTo || Math.floor(alphaMove) == setTo)) { 
                  this._xscale = ancho; 
                  this._yscale = alto; 
                  this._alpha = setTo; 
         delete this.onEnterFrame;       
         } 
    };
};


el codigo que puse en el boton es:

Código ActionScript :

on (rollOver) {
   redfade(foto,100,100,10,5);
}
on (rollOut) {
   redfade(foto,50,50,10,5);
}


Gracias nuevamente.

Por Thrasherskin

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Jun 2009 03:31 pm
El code es bastante rebuscado, si usaras la clase Tween o alguna de las librerías que se basan en ellas, con un par de llamadas bastaría. En tu caso, si v es la cantidad de pasos, divide 100/5 y agrega eso (o quita) en cada paso, no hay necesidad de recalcular en el onEnterFrame

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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