El primer paso será crear el trazado completo que queremos dibujar:

Luego utilizaremos este trazado como guía para un MovieClip, utilizando como punto inicial y final de la interpolación el punto inicial y final del trazado: Ahora mediante código haremos que este MovieClip mientras se desplaza por la guía vaya redibujando el trazado. Para eso crearemos una clase:
- class redibujaGuia
- {
- }
En el constructor de la clase pasaremos como parámentros la ruta de la instancia de clase y el MovieClip que utilizaremos
- public function redibujaGuia(qRuta:MovieClip, qGlider:MovieClip)
- {
- ruta = qRuta;
- glider = qGlider;
- //glider._visible = false;
- var num:Number = ruta.getNextHighestDepth();
- linea = ruta.createEmptyMovieClip("line"+num, num);
- linea.lineStyle(1, 0x000000, 100);
- }
Tambien creamos un MovieClip vacio donde dibujaremos el trazado, y creamos un lineStyle por defecto.
Crearemos tambien una función para poder editar el estilo del trazado:
- public function lineStyle(qGrosor:Number, qColor:Number, qAlfa:Number):Void
- {
- grosor = qGrosor;
- color = qColor;
- alfa = qAlfa;
- linea.lineStyle(grosor, color, alfa);
- linea.moveTo(glider._x, glider._y);
- }
- public function start():Void
- {
- glider.onEnterFrame = Delegate.create(this, onEnterFrame);
- }
- //---------------------------------
- private function onEnterFrame():Void
- {
- act = {x:glider._x, y:glider._y};
- linea.lineTo(act.x, act.y);
- if (prev && act.x == prev.x && act.y == prev.y)
- {
- delete glider.onEnterFrame;
- } else
- {
- prev = act;
- }
- }
- import mx.utils.Delegate;
- //---------------------------------
- class redibujaGuia
- {
- private var grosor:Number;
- private var color:Number;
- private var alfa:Number;
- private var ruta:MovieClip;
- private var glider:MovieClip;
- private var linea:MovieClip;
- private var act:Object;
- private var prev:Object;
- //---------------------------------
- public function redibujaGuia(qRuta:MovieClip, qGlider:MovieClip)
- {
- ruta = qRuta;
- glider = qGlider;
- //glider._visible = false;
- var num:Number = ruta.getNextHighestDepth();
- linea = ruta.createEmptyMovieClip("line"+num, num);
- linea.lineStyle(1, 0x000000, 100);
- }
- //---------------------------------
- public function lineStyle(qGrosor:Number, qColor:Number, qAlfa:Number):Void
- {
- grosor = qGrosor;
- color = qColor;
- alfa = qAlfa;
- linea.lineStyle(grosor, color, alfa);
- linea.moveTo(glider._x, glider._y);
- }
- //---------------------------------
- public function start():Void
- {
- glider.onEnterFrame = Delegate.create(this, onEnterFrame);
- }
- //---------------------------------
- private function onEnterFrame():Void
- {
- act = {x:glider._x, y:glider._y};
- linea.lineTo(act.x, act.y);
- if (prev && act.x == prev.x && act.y == prev.y)
- {
- delete glider.onEnterFrame;
- } else
- {
- prev = act;
- }
- }
- //---------------------------------
- }
Para utilizarla (a parte del proceso manula de dibujar la guía y colocar el MovieClip) utilizaremos este código en el fotograma donde empieze la interpolación:
- import redibujaGuia;
- var linea1:redibujaGuia = new redibujaGuia(this, glider1);
- linea1.lineStyle(2, 0x000000, 100);
- linea1.start();
1 comentario:
Saludos desde Colombia, he intentado implementar este ejemplo, pero no sé porque no me resulta, alguien tiene un *.zip con el ejemplo en *.fla y el *.as (clase).
Muchas gracias por su ayuda.
Publicar un comentario