En este Tip aprenderás a reflejar una imagen con Actionscript 3 y aplicarle una transición al pasar el Mouse sobre la imagen.
Cabe destacar que podemos usar el efecto sobre cualquier objeto de clase DisplayObject.
Lo primero que debemos hacer es crear un documento nuevo, crear o importar una imágen la cual podemos convertir tanto en Botón como en MovieClip, asignándole un nombre de instancia en el Panel de Propiedades y un nombre de Clase en el menú Linkage que podemos encontrar haciendo click derecho sobre el elemento en la Librería.

Código :
import fl.transitions.Tween; import fl.transitions.easing.*;
Código :
function reflectAndAnimate(target:DisplayObject, ease:Object, expandScale:Number, insetScale:Number, expandTime:Number, insetTime:Number):void
{
Código :
var targetClass:Class = Object(target).constructor; var targetCopy:DisplayObject = new targetClass(); targetCopy.y = target.y + target.height; targetCopy.x = target.x; targetCopy.rotation = 180; targetCopy.width = target.width; targetCopy.height = target.height; targetCopy.scaleX = -target.scaleX; addChild(targetCopy); var msk:Mask = new Mask(); addChild(msk); msk.x = targetCopy.x; msk.y = targetCopy.y; msk.width = targetCopy.width; msk.height = targetCopy.height;
Código :
function mskScale():void
{
msk.width = target.width;
msk.height = target.height;
targetCopy.y = target.y + target.height;
msk.y = targetCopy.y;
}
var intervalId:Timer = new Timer(1, 0);
intervalId.addEventListener(TimerEvent.TIMER, mskScale);
intervalId.start();
Código :
function expand(event:MouseEvent):void
{
var xTween:Tween = new Tween(target, "scaleX", ease.easeOut, target.scaleX, expandScale, expandTime, true);
var yTween:Tween = new Tween(target, "scaleY", ease.easeOut, target.scaleY, expandScale, expandTime, true);
var cxTween:Tween = new Tween(targetCopy, "scaleX", ease.easeOut, targetCopy.scaleX, -expandScale, expandTime, true);
var cyTween:Tween = new Tween(targetCopy, "scaleY", ease.easeOut, targetCopy.scaleY, expandScale, expandTime, true);
}
target.addEventListener(MouseEvent.ROLL_OVER, expand);
function inset(event:MouseEvent):void
{
var xTween:Tween = new Tween(target, "scaleX", ease.easeOut, target.scaleX, insetScale, insetTime, true);
var yTween:Tween = new Tween(target, "scaleY", ease.easeOut, target.scaleY, insetScale, insetTime, true);
var cxTween:Tween = new Tween(targetCopy, "scaleX", ease.easeOut, targetCopy.scaleX, -insetScale, insetTime, true);
var cyTween:Tween = new Tween(targetCopy, "scaleY", ease.easeOut, targetCopy.scaleY, insetScale, insetTime, true);
}
target.addEventListener(MouseEvent.ROLL_OUT, inset);
}
Código :
zguillez.scaleX = .5;
zguillez.scaleY = .5;
mx.scaleX = .5;
mx.scaleY = .5;
pedro.scaleX = .8;
pedro.scaleY = .8;
import fl.transitions.Tween;
import fl.transitions.easing.*;
function reflectAndAnimate(target:DisplayObject, ease:Object, expandScale:Number, insetScale:Number, expandTime:Number, insetTime:Number):void
{
var targetClass:Class = Object(target).constructor;
var targetCopy:DisplayObject = new targetClass();
targetCopy.y = target.y + target.height;
targetCopy.x = target.x;
targetCopy.rotation = 180;
targetCopy.width = target.width;
targetCopy.height = target.height;
targetCopy.scaleX = -target.scaleX;
addChild(targetCopy);
var msk:Mask = new Mask();
addChild(msk);
msk.x = targetCopy.x;
msk.y = targetCopy.y;
msk.width = targetCopy.width;
msk.height = targetCopy.height;
function mskScale():void
{
msk.width = target.width;
msk.height = target.height;
targetCopy.y = target.y + target.height;
msk.y = targetCopy.y;
}
var intervalId:Timer = new Timer(1, 0);
intervalId.addEventListener(TimerEvent.TIMER, mskScale);
intervalId.start();
function expand(event:MouseEvent):void
{
var xTween:Tween = new Tween(target, "scaleX", ease.easeOut, target.scaleX, expandScale, expandTime, true);
var yTween:Tween = new Tween(target, "scaleY", ease.easeOut, target.scaleY, expandScale, expandTime, true);
var cxTween:Tween = new Tween(targetCopy, "scaleX", ease.easeOut, targetCopy.scaleX, -expandScale, expandTime, true);
var cyTween:Tween = new Tween(targetCopy, "scaleY", ease.easeOut, targetCopy.scaleY, expandScale, expandTime, true);
}
target.addEventListener(MouseEvent.ROLL_OVER, expand);
function inset(event:MouseEvent):void
{
var xTween:Tween = new Tween(target, "scaleX", ease.easeOut, target.scaleX, insetScale, insetTime, true);
var yTween:Tween = new Tween(target, "scaleY", ease.easeOut, target.scaleY, insetScale, insetTime, true);
var cxTween:Tween = new Tween(targetCopy, "scaleX", ease.easeOut, targetCopy.scaleX, -insetScale, insetTime, true);
var cyTween:Tween = new Tween(targetCopy, "scaleY", ease.easeOut, targetCopy.scaleY, insetScale, insetTime, true);
}
target.addEventListener(MouseEvent.ROLL_OUT, inset);
}
reflectAndAnimate(pedro, Strong, 1.2, .8, .5, 1);
reflectAndAnimate(zguillez, Elastic, 1, .5, .5, 1);
reflectAndAnimate(mx, Back, 1, .5, .5, 1);
Código :
target.addEventListener(MouseEvent.ROLL_OVER, expand); target.addEventListener(MouseEvent.ROLL_OUT, inset);
Código :
TypeError: Error #1006: addEventListener is not a function. at reflejo_fla::MainTimeline/reflectAndAnimate() at reflejo_fla::MainTimeline/reflejo_fla::frame1()