Flash可视对象的关闭效果 工具类

这次用as3的矩阵来实现一些简单的关闭效果,作为矩阵使用的例子.


/**
* 旋转并缩小,最终关闭
* */
public function close(control:DisplayObject):void{
var timer:Timer = new Timer(44,0);
timer.addEventListener(TimerEvent.TIMER,onTimer);
timer.start();
var sx:Number = 1,sy:Number = 1;
var m:Matrix = new Matrix();
var angle:Number = 0;

function onTimer(e:TimerEvent):void{
sx -= 0.1;
sy -= 0.1;
angle += 1.4;
m.createBox(sx,sy,angle,control.x,control.y);
control.transform.matrix = m;
if(sx <0){
timer.stop();
control.parent.removeChild(control);
}
}
}

/**
* 缩小到左上角,直到关闭
* */
public function close2(obj:DisplayObject):void{
if(obj != null){
var sx:Number = 1,sy:Number = 1;
var m:Matrix = new Matrix();
var ox:Number = obj.x,oy:Number = obj.y;
var timerId:uint = setInterval(function():void{
m.identity();
m.translate(obj.x,obj.y);
m.scale(sx,sy);
obj.transform.matrix = m;
sx -= 0.1;
sy -= 0.1;
if(obj.x <= 0){
clearInterval(timerId);
obj.parent.removeChild(obj);
}
},50);
}
}

/**
* 向中间缩小
* */
public function close3(obj:DisplayObject):void{
if(obj != null){
var timerId:uint = setInterval(function():void{
obj.width *= 0.6;
obj.height *= 0.6;
obj.x += obj.width/4;
obj.y += obj.height/4;
if(obj.width <= 1){
clearInterval(timerId);
obj.parent.removeChild(obj);
}
},44);
}
}

下面是完整的类:
package effects
{
import flash.display.DisplayObject;
import flash.events.TimerEvent;
import flash.geom.Matrix;
import flash.utils.Timer;
import flash.utils.clearInterval;
import flash.utils.setInterval;

public class EffectTool
{
public function EffectTool()
{
}
/**
* 旋转并缩小,最终关闭
* */
public function close(control:DisplayObject):void{
var timer:Timer = new Timer(44,0);
timer.addEventListener(TimerEvent.TIMER,onTimer);
timer.start();
var sx:Number = 1,sy:Number = 1;
var m:Matrix = new Matrix();
var angle:Number = 0;

function onTimer(e:TimerEvent):void{
sx -= 0.1;
sy -= 0.1;
angle += 1.4;
m.createBox(sx,sy,angle,control.x,control.y);
control.transform.matrix = m;
if(sx <0){
timer.stop();
control.parent.removeChild(control);
}
}
}
/**
* 缩小到左上角,直到关闭
* */
public function close2(obj:DisplayObject):void{
if(obj != null){
var sx:Number = 1,sy:Number = 1;
var m:Matrix = new Matrix();
var ox:Number = obj.x,oy:Number = obj.y;
var timerId:uint = setInterval(function():void{
m.identity();
m.translate(obj.x,obj.y);
m.scale(sx,sy);
obj.transform.matrix = m;
sx -= 0.1;
sy -= 0.1;
if(obj.x <= 0){
clearInterval(timerId);
obj.parent.removeChild(obj);
}
},50);
}
}
/**
* 向中间缩小
* */
public function close3(obj:DisplayObject):void{
if(obj != null){
var timerId:uint = setInterval(function():void{
obj.width *= 0.6;
obj.height *= 0.6;
obj.x += obj.width/4;
obj.y += obj.height/4;
if(obj.width <= 1){
clearInterval(timerId);
obj.parent.removeChild(obj);
}
},44);
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gamebox1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值