Cristalab

Movimiento de una bandera dinámicamente por ActionScript

Por: luisbas
13 de Octubre del 2004
115 de clabLevel
Otros artículos de luisbas
187,400 visitas
Antes que nada hay que aclarar que este ejemplo solo sirve para flash mx, y no así para mx 2004, así que no renieguen.

El efecto de bandera en movimiento necesita solo un layer o capa y un solo fotograma donde va la acción.
Para empezar, importemos la imagen (que no tiene porque ser únicamente una bandera) al escenario (no a la biblioteca). También podemos optar por dibujar nuestra propia bandera en flash.

Luego importemos la imagen o nuestra propia creación a la biblioteca (simplemente arrastrándola), al hacer esto, flash nos preguntará en que la queremos converir. Elegimos la opción de clip de película o movie clip, le ponemos el nombre “foto” y el registro en la esquina superior izquierda

Una vez que la imagen está dentro de la biblioteca con su respectivo nombre de instancia”foto”, le damos click derecho y accedemos al menú “vinculación”. Ahí marcamos la opción de “exportar para Action Script” y automáticamente se marca la opción “exportar en el primer fotograma”.
Luego de esto, volvemos a nuestro escenario y borramos la imagen que habíamos importado (ya que, ya está dentro de la biblioteca como un MC).

Marcamos el primer fotograma clave de nuestro único layer y abrimos el panel de acciones.
Dentro pegamos este código:

interacciones = 30;
xo = 40;
yo = 30;
for (var i = 0; i<interacciones; i++) {
mc = attachMovie("foto", "foto"+i, 10+i*10, {_x:xo});
ancho = mc._width;
alto = mc._height;
uni = ancho/interacciones;
duplicate = _root.createEmptyMovieClip("mc"+i, 2000+i*100);
duplicate.lineStyle(0);
duplicate.beginFill(0, 100);
duplicate.moveTo(0, 0);
duplicate.lineTo(0, alto);
duplicate.lineTo(uni, alto);
duplicate.lineTo(uni, 0);
duplicate.lineTo(0, 0);
duplicate._x = xo+i*uni;
mc.setMask(duplicate);
}
this.onEnterFrame = function() {
for (var i = 0; i<interacciones; i++) {
this["mc"+i]._y = this["foto"+i]._y=yo+5*Math.sin(a += 0.2);
}
};
Sin mas ni menos, probamos nuestra película con Crl+enter.
Es muy probable, como me ocurrió a mí en principio, que solo se les vea una parte de la imagen o bandera que flamea. La solución a esto es modificar el valor de las variables “X” e “Y” dentro del código que pusimos en el panel de acciones.
Si siguieron los pasos correctamente, su imagen o bandera debería estar flameando perfectamente.
El secreto para que no aparezcan líneas blancas en la imagen es crear la imagen al tamaño que la van a usar, y luego meterla en la biblioteca ya que el Script utiliza una variable llamada SetMask() y si se modifica el tamaño luego, aparecen unas no muy estéticas líneas en la bandera o imagen.

Información adicional

Ejemplo del tutorial
Archivos del tutorial
Si tienes alguna pregunta de este tutorial; puedes hacerla aqui en los foros

Tutoriales relacionados