Cristalab

Efecto de movimiento elástico para texto con ActionScript 2

Por: penHolder + 10.12.2007

Antes que nada debo decir que este tip no seria posible sin la ayuda de algunos grandes Clabbers como eldervaz, HernanRivas, y the Fricky!, pero principalmente, y con mucho odio en el corazón, debo aceptar que es gracias a Zguillez, quien logró el gran ajuste final.
Ahora si, la explicación, si bien es un efecto simpático y vistoso es una de esas cosas que solo son bonitas pero carecen de mucha utilidad U_U.

Esto es lo que vamos a hacer:



Lo primero que hacemos es importar la clase tween y sus suavizados

Código :

import mx.transitions.Tween;
import mx.transitions.easing.*;

Luego creamos una variable de tipo String, la cual será el texto principal y eje de nuestro código

Código :

var word:String = "cristalab";

A continuación declaramos tres Arrays donde almacenaremos: cada letra del texto, cada nueva letra convertida en clip, y la posición en x de estas ultimas respectivamente

Código :

var matrix:Array = word.split("");
var models:Array = new Array();
var modelsPosX:Array = new Array();

Ahora vamos con un poco de estilo para el texto y la variable spacing que será, en parte, la que defina la separación de las letras

Código :

var spacing:Number = 1.7
var style = new TextFormat();
style.color = 0xFF9900;
style.font = "Verdana";
style.bold = true;
style.size = 30;

Bien, vamos con lo divertido, primero una variable que almacene el largo del Array que contiene a cada letra del texto

Código :

var t:Number = matrix.length;

Luego un for seteado por ésta variable

Código :

for (var i:Number = 1; i<=t; i++) {

Y dentro del for lo siguiente:
Un MovieClip creado por cada letra de la palabra

Código :

var modelLetter:MovieClip = this.createEmptyMovieClip("letter"+i, this.getNextHighestDepth());

Un TextField en cada MovieClip creado

Código :

modelLetter.createTextField("textLetter", this.getNextHighestDepth(), 0, 0, null, null);

A cada TextField le asignamos una letra del texto almacenada en el Array

Código :

modelLetter.textLetter.autoSize = true;
modelLetter.textLetter.text = matrix[i-1];

Y a los TextField le asignamos el estilo antes definido

Código :

modelLetter.textLetter.setTextFormat(style);

Ahora la magia de Zguillez:
Llenamos el Array con cada nueva letra creada

Código :

models.push(modelLetter);

Asignamos una posición inicial a las letras

Código :

var posXini:Number = 0;

Y mediante un condicional vamos ubicando una a continuación de la otra separadas por el valor antes seteado

Código :

var posX:Number = (i != 1) ? (models[i-2]._x+models[i-2]._width*spacing+modelsPosX[i-2]) : posXini;
modelsPosX.push(posX);

Bien, ahora en un nuevo for vamos a crear los movimientos mediante tweens aplicadas a cada letra

Código :

for (var i:Number = 1; i<=t; i++) {
      var fadeInYs:Tween = new Tween(models[i-1], "_yscale", Elastic.easeOut, 100, 200, i, true);
      var fadeInXs:Tween = new Tween(models[i-1], "_xscale", Elastic.easeOut, 100, 200, i, true);
      var fadeInX:Tween = new Tween(models[i-1], "_x", Elastic.easeOut, 0, modelsPosX[i-1], i, true);
   }

bien, espero les sirva para algo,
[aqui esta el fla]

Etiquetas actionscript

Comentarios | Enviar un comentario
todo un maestro Zguillez Bien buen tip
Por: eldervaz
Te quedó c00l thePenTangerine. Zguillez rlz!!! Gracias por aliviarme un dolor de cabeza porque iba a ponerme en ello hoy Thumbs up
Por: The Fricky!
Si mal no lo recuerdo es un efecto similar a "La Fotografica", verdad ¿?...
Se ve muy bien TheTangerine !!!...
Por: M@U

penHolder :

Ahora la magia de Zguillez:

Juas! ni que fuera Harry Potter...

Mirándomelo con más calma te solucioné otro problema...miau
Fíjate que al tener la opción de texto seleccionable en las cajas al querer seleccionar la palabra en realidad solo podrás seleccionar una letra


Doble-click en la palabra solo selecciona una letra


Esto se puede solucionar sustituyendo al final de la animación de los tweens todas las cajas de las letras por una cajaj de igual tamaño con la palabra entera.


Doble-click en la palabra al final de la animación seleccionas toda la palabra


Básicamente es con un onMotionFinished

Aquí el código

miau
Por: Zguillez

Zguillez :


Doble-click en la palabra al final de la animación seleccionas toda la palabra


Básicamente es con un onMotionFinished
Y no saldria mejor desactivando el "selectable" ¿?...
Por: M@U

M@U :

Y no saldria mejor desactivando el "selectable" ¿?...

Naturalmente esta sería una solución para el caso de que te interesase mantener el texto seleccionable... si fuese una animación para un texto de párrafo, o asi... Evidentemente haciéndolo no seleccionable no te dará problemas de selección... :zombie:


Por: Zguillez
Cada vez me sorprenden más, ¿pero qué otra cosa se les ocurrirá con el paso del tiempo a estos niños?, Jaja, me sigo atragantando un poquito con ciertas cosas, pero cada vez me es más fácil entender todo lo que están haciendo, no estaría de más ser un poquitín más específicos con los códigos para los tios que aun no dominamos bien sintaxis y esas cosas, gracias por su enorme ayuda.
Por: Señor Oz_blog

Zguillez :


Naturalmente esta sería una solución para el caso de que te interesase mantener el texto seleccionable... si fuese una animación para un texto de párrafo, o asi... Evidentemente haciéndolo no seleccionable no te dará problemas de selección... :zombie:
Doh !
Ese obviamente no era mi punto... En fin, buen Tip...
NIF
Por: M@U
Genial! Muy Feliz
Por: Kinduff
Claro Mauricio se refería a lo primero que se puede notar mas allá del efecto es el texto dentado ¿o no M@u?...

Esto me huele a imitación del Swish Muy Feliz
Por: enjoydasilence_blog
Jujauajuajuajau ROFLMAO Riendo.
"MASTER OF THE OBVIOUS"... Esa imagen debería aparecer en los diccionarios como "own3d".
Por: GustavoGarzón_blog
Excelente trabajo felicidades!!!
Por: christopher_blog
Buena Onda. Me llega el tip
Por: Elias_blog
hola amigos bueno no comprendi nada si ubiera sido mas facil si el script dejara de ser tan dificil
saludos
atte
ychuss
jhuari15@hotmail.com
Por: ychuss_blog
Postean wadas. Resuelvan consultas especificas, quien quiere saber si pueden o no hacer ese efecto, en 3 dias o mas
Por: Carlos_blog
Che, carlos_blog, No seas pelotudo que todo el mundo aprende. En particular, yo sé hacer ese efecto, (grande lo del seleccionable, eso sí que no se me había ocurrido). -pero no por eso estoy por la vida criticando a la gente, y menos si aprenden como chumbo. Esos son los que van a lograr que te mueras de hambre en tu mediocridad. Te reto a un duelo flash igual, te puedo asegurar que sos carne para la picadora, por bocón. Aprendé pila flaco, que sabrás de flash, pero de callarte la boca no tenés NPI
Por: german-wasem_blog
MAESTRO MAESTRO MAESTRO...bueno no nos digamos mentiras, el maestro es el burro y el cerdo... pero este tip esta buenisimo, muchisimas gracias
Por: shadow-host_blog
buenisomo!, pero una consulta, como podria ttambien aplicarle una trancicion en alpha?, por al ser texto dinamico cuando hago una teen con alpah no lo aplica T_T si alguien me podria explicar gracias Guiño
Por: nadie_blog
muy lindo
Por: nicolas_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.