viernes, agosto 12, 2005

(FLASH) Escalar con función Prototype

  1. Tenemos un movie clip que contiene un cuadro de texto dinámico llamado "título", sacamos 3 copias del clip al escenario y les ponemos nombre de instancia que terminen en número empezando de 0: let0, let1, let2, tenemos 3 clips con nombres.
  2. Escribir en el primer fotograma:

    var textos=["Opción 1", "Opción 2", "Opción 3"]
    for(i=0; i<=textos.length; i++){

    _root["let"+i].titulo=textos[i]
    }
  3. Función prototipo:
    Movieclip.prototype.cambiomas=function(){
    _xscale+=(200-_xscale)/5
    _yscale+=(200-_yscale)/5
    }
    Acabamos de crear una funcion "cambiomas" para aumentar el tamaño del clip, explico los cálculos: la idea es que el clip crezca no de un tirón sino como proceso...paso a paso, que se vea que crece, entonces usamos matemáticas: si 100 es el tamaño del clip (100%) el doble es 200, para simular un cambio a paso lento le restamos a 200 el valor del tamaño actual del clip y lo dividimos entre 5 (5, 6, 7 o lo que quieras, a menos cantidad más rápido) esto se debe a cositas sencillas: si dividimos: 100/10, sería 10, pero si es 100/20 sería 5...el cambio sería más lento (de 5 en 5) si se pone números más altos. El clip para al llegar a 200 ¿porque? porque su cálculo llegaría a un total de 200+=0.0...(léase 200-200).Mucho ojo con la supremacía en las operaciones en Flash: la suma es al último, primero va lo de entre parentesis, luego la división, luego la suma. Ve el diccionario de AS para más detalles "Precedencia de Operadores".
  4. La función de disminución tiene el mismo estilo:
    Movieclip.prototype.cambiomenos=function(){
    _xscale+=(100-_xscale)/5
    _yscale+=(100-_yscale)/5
    }
    Es decir el límite de disminución es el tamaño original: 100.
  5. Una vez que tenemos esto en el frame inicial pongamos falta invocar estas funciones desde los clips, dentro de cada clip va el mismo script:

onClipEvent(enterFrame){
/*Si el mouse se coloca sobre el clip pues se invoca a la
función de aumento*/
if(this.hitTest(_root._xmouse,_root._ymouse,true)){
this.cambiomas()
/*SINO (es decir si no está sobre el clip) se aplica la de
desaumento*/
}else{
this.cambiomenos()
}
}

No hay comentarios.: