Cristalab

                 ¿Quieres registrarte?

Efecto de trazo de lapiz animado en Flash

Por: Zguillez
23 de Febrero del 2007
6416 de clabLevel
Otros artículos de Zguillez
47,244 visitas

Este es un sistema muy sencillo para redibujar un trazado de manera que parezca que se está dibujando al tiempo que se escribe. Cómo una animación de un lápiz escribiendo una curva en el papel. Este sería el efecto:


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:

Código :

class redibujaGuia
{
}

En el constructor de la clase pasaremos como parámetros la ruta de la instancia de clase y el MovieClip que utilizaremos

Código :

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:

Código :

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);
}

Por ultimo crearemos una función que genere un onEnterFrame que dibuje una línea cada vez que el MovieClip se mueva sobre la guía:

Código :

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;
   }
}

Con lo que la clase completa quedaría asi:

Código :

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 manual de dibujar la guía y colocar el MovieClip) utilizaremos este código en el fotograma donde empiece la interpolación:

Código :

import redibujaGuia;
var linea1:redibujaGuia = new redibujaGuia(this, glider1);
linea1.lineStyle(2, 0x000000, 100);
linea1.start();


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
:o Muy bueno ^^
Por: Zah
deluxe! thanks!

esto va a ahorrarme mucha chamba... yo hacia este procedimiento con animación cuadro a cuadro (para que dibujara a linea)
Por: H3r3j3
articulo interesante
Por: jenny_blog
esta interesante...
Por: Teresa_blog
* Copiando código ..
Excelente Tip

Gracias!
Por: majitto
ta güeno
Por: nahaliel
desde mis inicios en flash siempre quice hacer ese efecto,
aha por fin!!
Por: eveevans_blog
Un gran aporte a la animación. Muchas gracias.
Por: almendro_blog
super!! ^^
Por: oxigeno
Muchas gracias!
Por: Rafeo_blog
Y yo matandome con mascaras xD!!
Por: nick77_blog

nick77_blog :

Y yo matandome con mascaras xD!!


+1 ... T_T en una ocasión tuve que hacer un trabajo con mascaras que me hizo odiarlas hasta el dia de hoy U_U



:alabado: :alabado: :alabado:
Por: mrkoala
Esto ahorra tener que crear máscaras graciosas para poder mostrar de buena manera un linea en espiral. ;)
Por: DanielSemper
Increible. tanto tiempo queriendo hacer ese efecto y nunca se me habia ocurrido ese metodo!
Excelente Zguillez!!!!
Por: eveevans
por favor, pueden publicar el .fla porque soy novato en el asunto y no logro materializar el asunto.
Gracias
Por: incubo_blog
Y yo siempre usando mascaras o fotograma por fotograma ¬¬


Gracias :lol:
Por: zombieek
:o esta bueno el efecto
Por: AaronDark_blog

incubo_blog :

por favor, pueden publicar el .fla porque soy novato en el asunto y no logro materializar el asunto.
Gracias
Si claro, aqui tienes los archivos ;)
Por: Zguillez
Wow, excelente tip Zguillez!!

Me ha gustado mucho ^^
Por: XKlibur
Como novata que soy he intentado descargarme el fla para asi hacerlo paso a paso pero me sale un mensaje que dice formato de archivo inesperado tengo el flash MX me lo podrías mandar por correo, te estaria muy agradecida
carmencvg@yahoo.es
Por: carmen_blog

carmen_blog :

Como novata que soy he intentado descargarme el fla para asi hacerlo paso a paso pero me sale un mensaje que dice formato de archivo inesperado tengo el flash MX me lo podrías mandar por correo, te estaria muy agradecida
carmencvg@yahoo.es

Necesitas flash8, sorry :crap:
Por: Zguillez
Me funciona correcto el tema de dibujar la línea, pero resulta que la misma no me sale suavizada, es decir que aunque en modo edición la vea bien, cuando publico la linea que se dibuja me sale con los bordes rectos, ¿alguna sugerencia?


PD. En el ejemplo descargado si la veo redondeada, tanto en edicion como cuando publico.

saludos y gracias
Por: tengo un problemilla ..._
Wow excelente muchas gracias!!
Por: trino_as

tengo un problemilla ..._ :

Me funciona correcto el tema de dibujar la línea, pero resulta que la misma no me sale suavizada, es decir que aunque en modo edición la vea bien, cuando publico la linea que se dibuja me sale con los bordes rectos, ¿alguna sugerencia?


PD. En el ejemplo descargado si la veo redondeada, tanto en edicion como cuando publico.

saludos y gracias

El problemas es que le estas dando pocos fotogramas a la animación.

La linea que dubujas solo sirve como guía para desplazar el movieclip por la pelicula. Y este movieclip es el que fotograma a fotograma va diujando lineas mientras avanza. El tema es que si colocas pocos fotogramas en la animación el paso de un fotograma a otro será grande y verás lineas rectas largas.

Lo que has de hacer es ponerle más fotogramas. Y si lo que quieres es hacer la animación más rápida subes la velocidad de fotogramas de la pelicula
Por: Zguillez
Hay alguna manera de que tome el grosor de la linea hecha (tengo una tableta y me interesaria que la linea tenga distintos grosores) o hacerla cambiar de grosor de alguna manera? e intentado pero no me sale, desde ya muchas gracias
Por: Federico_blog
para eso esta la function:
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);
}

o me equivoco?
Por: eveevans
soy "tengo un problemilla" :)

Gracias, tenias razón, era cosa de los fotogramas, ahora ya "pinta" como es debido. XD
Por: cLydde_blog
fantástico,pero al bajarme el flash no veo la linea de trazo, es como si estuviera invisible, ¿porque será?
Por: diegolo_blog
Sencillamente increible.
Gracias por tu aportacion ya andaba harto de mascaras para hacer este efecto.
Si tienes mas ideas soy todo oidos.
Saludos.
Por: fran_blog
Me parece más sencillo, aunque va a sonar más complicado, enmascarar la forma con un sprite (movieclip) que tenga a la misma forma con otra máscara que va creciendo. Parece complejo al escribirlo, pero son cuatro clic. No veo yo las ventajas de hacerlo de esta manera.
Por: asalinasci_blog
de la fomra que propones no es facil el crear una curva que retorne hacia atrás y cruce su anterior trazo. (espirales)
Por: DanielSemper
es cierto, no lo había pensado, tendrías que ir añadiendo más máscaras y sería un coñazo. Gracias.
Por: asalinasci_blog
Hola. Me da un error y no me muestra el trazo, sólo el lápiz en movimiento.

**Error** Escena=Scene 1, capa=Layer 1, fotograma=1:Línea 2: No se pudo cargar la clase o interfaz 'redibujaGuia'.
var linea1:redibujaGuia = new redibujaGuia(this, glider1);

Total de errores de ActionScript: 1 Errores comunicados: 1
Por: macmigue_blog

macmigue_blog :

Hola. Me da un error y no me muestra el trazo, sólo el lápiz en movimiento.

**Error** Escena=Scene 1, capa=Layer 1, fotograma=1:Línea 2: No se pudo cargar la clase o interfaz 'redibujaGuia'.
var linea1:redibujaGuia = new redibujaGuia(this, glider1);

Total de errores de ActionScript: 1 Errores comunicados: 1

Eso es porque no carga bien la clase. Coloca el archivo .as junto a tu .fla
Por: Zguillez
Hola! Muchas gracias por tu solución al problema de poder dibujar en tiempo real, Zguillez. Es genial!

Solamente tengo un problema. Si quiero dibujar varios trazos en diferentes fotogramas a lo largo de la película, en el momento de dibujar uno automáticamente el último creado desaparece. He intentado crear varias clases en el mismo archivo .as, pero veo que no se puede, así que no sé como solucionarlo ya que el tema de las clases justo ahora empiezo a utilizarlo.
Por: Laura_blog
baya q es bueno hace tiempo q estaba buscando estoya q en las clases no tenian esta informacion a pesar de ser una institucion reconocida lo q me interesari seri aprender mas de action script de com fuciona cada codigo,tambien e bisto q se puede crear repruductores de mp3y eso no nos enseñaron es pmuy bueno cristallab x q ay pocos lugares q t dan inf -_- º_º
Por: nuevo_blog
Quisiera cambiar el color de la línea trazada, para que en lugar de negra sea del color que yo quiera, pero no sé cómo hacerlo, no tengo mucha idea de actionscript. Cómo puedo decir qué color quiero?
Por: silvana_blog
oye quisiera saber sobre animacion alfa y sobre animacion tinta enviamelo a mi correo tom_nha_89 aroba hotmail
Por: aaron_blog
Que tal yo tambien tengo el mismo problema que macmigue, aunque ya guarde los dos archivos el fla y el .as juntos y aun no se ve la linea y me sigue mandando ese error, si me puedes ayudar te lo agradeceria
Por: daresyscom_blog
gracias esto me ha servido demasiado para poder realizar mi tarea!!!!
Por: Ana milena _blog
Excelente :wink:
Por: flashreloco
que buen post, muchas gracias :)
Por: Guau_blog
me pueden decir como puedo descargarrrrr jejejeje
Por: patricia_blog
conseguiii.. super bueno
Por: patricia_blog

patricia_blog :

me pueden decir como puedo descargarrrrr jejejeje


Me parece que el chiste es que lo hagas tu :roll: , viendo las instrucciones .
Por: flashreloco
soy novato en esto... pero que muy novato...os explico tengo un grupo de hip-hop y quisiera hacer un video mas o menos como este:http://www.youtube.com/watch?v=IFVua4Y79ow

si os dais cuenta hay veces k los nombres de cada uno de los integrantes... sale con efecto de trazado... quisiera saber si eso se hace con este mismo metodo... es decir k en ves de crear tu mismo el trazado inicial pusieras la foto de tu nombre... o se hace con algun otro programa...por favor si alguien me puede ayudar... felipeyandres@msn.com les agradeceria de todo corazon!
Por: felipe _blog
no entiendo esta parte (Tambien creamos un MovieClip vacio donde dibujaremos el trazado, y creamos un lineStyle por defecto.)
Por: Lucas_blog
me tira estos errores si alguien me puede ayudar muchas gracias

**Error** Escena=Escena 1, capa=lapiz, fotograma=1:Línea 1: No se pudo cargar la clase o interfaz 'redibujaGuia'.
import redibujaGuia;

**Error** Escena=Escena 1, capa=lapiz, fotograma=1:Línea 2: No se pudo cargar la clase o interfaz 'redibujaGuia'.
var linea1:redibujaGuia = new redibujaGuia(this, glider1);

Total de errores de ActionScript: 2 Errores comunicados: 2
Por: Lucas_blog

Zguillez :

macmigue_blog :

Hola. Me da un error y no me muestra el trazo, sólo el lápiz en movimiento.

**Error** Escena=Scene 1, capa=Layer 1, fotograma=1:Línea 2: No se pudo cargar la clase o interfaz 'redibujaGuia'.
var linea1:redibujaGuia = new redibujaGuia(this, glider1);

Total de errores de ActionScript: 1 Errores comunicados: 1

Eso es porque no carga bien la clase. Coloca el archivo .as junto a tu .fla


Ya habias leido esto :roll:
Por:
lo hice antes y no pasa nada .......y si lo habia leido
Por: Lucas_blog
Hola, muy interesante todo esto, y la verdad me gustaria aprender, les felicito por compartir, soy tan novata en todo esto..estoy tan ansiosa de aprender.
Por: milka_blog
¿Alguien me puede ayudar? Aw Crap

Soy nueva en esto y no entiendo donde se tiene que poner el código...
Creo entender que hay dos secciones de código;
1º que crea una clase y no se dónde se pone
2º en el fotograma donde empieza la interpolación dentro del clip ¿no?

Gracias por perder unos minutos conmigo Riendo
Por: la nena wena_blog
por el dia de que yo le die a mi madre que nunca crei que el presidente de los estados unidos fuera un burro por que gasta mucho dinero en bombas para la gera en irak y matan a mucha gente siiiii......
Por: abran limcon_blog

abran limcon_blog :

por el dia de que yo le die a mi madre que nunca crei que el presidente de los estados unidos fuera un burro por que gasta mucho dinero en bombas para la gera en irak y matan a mucha gente siiiii......


:o ... :? , :zombie:
Por: penHolder
mmm.. y como modifico el recorrido?? por que no lo ceo por ingun sitio! :'(

Txs!
Por: Gracienk_blog
muy buen, podrias publicar mas ejercicios
Por: bee_blog
Como puedo conseguir el actionscript3? k tengo k bajarme el flex?
Por: fousini_blog
Me ha sido muy util
Muchas gracias

Un saludo
luis
Por: gracias_blog
Saludos.

Realmente estaba buscando esto, pero es un mensaje viejo y el código no me funciona bien (soy medio novato) por lo que traté de descargar el fl pero ya no está disponible. Entonces quería ver si por favor me lo pod+ian volver a subir a ver si me funciona y entiendo un poco más como se trabaja esto.

Muchas gracias.
Por: Conic-blog
Hola amigos
trato de hacerlo pero no puedo
si alguien me puede pasr el .fla
para poder analizarlo para saber donde tengo el error se los agradezco
saludos
erbus7@gmail.com
ok
Por: erbus7-blog
hola amigos copie el codigo del trazo todo lo puse en la misma carpeta el fla y el as y al ejecutarlo no me muestra el trazado alguien sabe donde puedo bajarme el fla que pusieron o si alguien me lo puede enviar alejandroare@hotmail:com gracias
Por: carlos-blog
ya logre hacerlo, lo que me faltaba era poner como glider1 al nombre de isntancia del clip de pelicula (el lapiz), como lo indica en el codigo del frame donde empieza la interpolacion
var linea1:redibujaGuia = new redibujaGuia(this, glider1);
quizas a alguien le falte lo mismo,ahora puedo modificar este codigo y hacer una linea que se deslize como una forma de gusanito,porque yo hacia este efecto con una mascara era efectivo salvo cuando el gusanito tenia quedar una vuelta en U, me ha servido mucho, gracias
Por: carlos-blog
Ju, no me sale, alguien me puede ayudar?. No me puedo descargar el archivo, supongo que es que ha pasado mucho tiempo desde que escribieron esto
Por: patritf-blog
Disculpen, podrian poner nuevamente el archivo .fla, gracias
Por: isra_mx-blog
por fis si pudierna poner de nuevo el fla
Por: emac-blog
Alguien puede pasarme el archivo .fla....
llevo dias intentando hacerlo y no hay manera....
no encuentra la ruta de la clase!
Por: pepin-blog
actualicen por favor
Por: kekoxxx
Sinceramente, soy nueva en esto y no comprendo,no se como seguir las instrucciones podria alguien explicarme?
gracias
Por: keightt94-blog
Hola! disculpa, sera que puedas poner a disposicion el .fla de la aplicacion, ya que intente descargarlo pero me marca error del servidor.

muchisimas gracias

Buenas tardes!
Por: lsc_tomni
Hola! me he intentado bajar los fuentes, pero marca un error. Podrias subirlo nuevamente.
Gracias
Por: pixel-blog
He intentado realizar el ejercio paso a paso como lo publica Zguillez y siempre me marca errores, podria alguien subir nuevamente el archivo .fla

Muchas Gracias!!
Por: Gskm-blog
Hola, llevo un par de dias intentando como realizar este .fla y algo me esta fallando..
ademas los links para la descarga de .fla no funcionan.
alguien podria mandarme el archivo?..
o decirme donde lo puedo bajar,
muchisimas gracias.
Por: Pedro Pablo Arias-blog
hola parece ke esta buenazo nolo e aplicado todavia pero creo ke est buenazo lo aplicares
Por: junior-blog
uhh, no me funciona la descarga y he intentado hacerlo yo misma pero no me funciona...quién podría dar el link de los archivos?


Gracias
Por: anifutip-blog
Me gustaria saber si pueden hacer el trazo del lapiz animado sin la utilizacion de action script, poderlo explicar con fotogramas paso a paso y enviarme el archivo armado en flash para poder ver el procedimiento,
Gracias, mi correo arny_lopez@hotmail.com
Por: Arnulfo Lopez-blog
Alguien me puede pasar el .fla al siguiente email kaoos18@hotmail.com

gracias
Por: kaoos-blog
Yo tampoco puedo descargarme el fla si alguien puede que me lo envie a guadalupe14@ozu.es.

Muchas gracais
Por: Guada-blog
yo ni sabia hacer elefecto con mascaras :lol:
siempre me mataba frame por frame :cry:
pero nuca mas :cool:
gracias :)
Por: [Ray]
hola , necesito cambiar el grosor y el color de la linea.. como lo puedo hacer=? Gracias!!
Por: magui-blog
como esta eso de los codigo
Por: bob-blog
Alguien me puede ayudar enviandome el .fla lo necesito urgente, fabiapr@gmail.com
Por: fabian-blog
hmmm sabes lo utilice en un boto y me va de lujo pero el problema es como hago para que despues de usarlo pueda borrarla de nuevo? ya que cuando por ejemplo abro una puerta hecha con este efceto la puerta se queda ahi
Por: ivan-blog
a mi tambien me gustaria descargarme el .fla a ver si soy capaz de entenderlo...alguien puede actualizar link por favor??? es q asi me lio muchoooo :(
Por: chicaverde-blog
alguién puede subir el ejemplo? ya no esta disponible :'(
Por: CAMILO-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.