Comunidad de diseño web y desarrollo en internet online

¿curiosidad matematica o fallo de flash?

Citar            
MensajeEscrito el 08 Jun 2006 11:58 pm
Buenas noches.

Encontrábame yo terminando mi primera aplicación en flash y action script cuando me ha dado resultados inesperados. Os cuento. Tengo variass instancias de un MovieClip creados dinámicamente para hacer un efecto de transcición entre varias imagenes cargadas dinámicamente en esos MC. Para hacer esa transcición habia pensado en modificar desde AS el _alpha de los MC mediante una función que estoy implementando. En uno de los pasos, tengo este código:

Código :

trace("alpha de cImg"+_global.fader.img_actual+ " antes es " + _root["cImg"+_global.fader.img_actual]._alpha); //Para visualizar su valor previo 
_root["cImg"+_global.fader.img_actual]._alpha += 10; //Incremento en 10 su valor (previamente es 0)
trace("alpha de cImg"+_global.fader.img_actual+ " despues es " + _root["cImg"+_global.fader.img_actual]._alpha); //Para visualizar su valor posterior


Coloqué los trace ante la sospecha de que algo no iba muy bien... Y la pantalla de salida mostraba lo siguiente:
alpha de cImg1 antes es 0
alpha de cImg1 despues es 9.765625

¿cómo puede explicarse eso? Por más que le doy vueltas no logro entenderlo. Como podreis ver en el código, debería haber incrementado en 10 su valor, en cambio lo hace sólo en 9.765625. A ver si podeis orientarme porque con esto me he quedado frio. Gracias.

Un saludo.

Por javierav

22 de clabLevel



Genero:Masculino  

Córdoba (España)

firefox
Citar            
MensajeEscrito el 09 Jun 2006 07:36 am
no entiendo bien tu problema pero si quieres modificar al alfa de un mc es muy sencillo

Código :

xxx_mc.onRollOver = function() {
   this.onEnterFrame = function() {
      if (valor>20) {
         valor = valor-6;
      }
      this._alpha = valor;
   };
};
xxx_mc.onRollOut = function() {
   this.onEnterFrame = function() {
      if (valor<100) {
         valor = valor+6;
      }
      this._alpha = valor;
   };
};

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 09 Jun 2006 09:50 pm
En ningun momento veo q inicialices ese alfa... con 0 tu supones que es 0 . Pero no hay q suponer pues noooooooohhh.... jojojo

Por davo25

183 de clabLevel



 

Lima - Peru

firefox
Citar            
MensajeEscrito el 10 Jun 2006 12:26 am
Si quieres evitarte problemas con onEnterFrame y operaciones matematicas para hacer transiciones, te recomiendo que le heches un ojo al la clase Tween, a la cual le asignas la propiedad que deseas cambiar (en tu caso _alpha), el valor al que quieres llegar, el tipo de easing que requieras y el tiempo que necesitas para que se haga la animación.

Sintaxis para una animacion con tween

Código :

objeto = new Tween( movie_clip , propiedad_a_cambiar , tipo_de_animacion , valor_inicial  , valor_final , tiempo_o_frames , usar_segundos);


Te pongo un pequeño ejemplo:

Código :

//Importas la clase Tween
import mx.transitions.Tween;

//Ejecutas la animación
miAnimacion = new Tween (miMovieClip, "_alpha", mx.transitions.easing.Regular.easeOut,0,50, 8, false);

//COn esto sabes cuando termino de realizar la animacion
miAnimacion.onMotionFinished = function() {
         trace("Termino la animación");
}


Con lo anterior hace lo siguiente:
Realiza una animacion donde cambiara la propiedad alpha del objeto miMovieClip, el cual ira de 0 a 50% en un lapso de 8 Frames
y utiliza un tipo de animacion regular con easingOut.

Si quieres mas informacion de los tipos de animacion disponibles para la clase, date una leida a la clase Tween en la Referencia de Flash

Por heberto

263 de clabLevel

1 tutorial

1 ejemplo

 

Morelia, Michoacán

netscape

 

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