Iris.as
package
mx.effects
...
{
//导入Iris的实例类
import mx.effects.effectClasses.IrisInstance;
//扩展MastEffect
public class Iris extends MaskEffect...{
//包含flex的版本说明文件
include "../core/Version.as";
//构造函数
public function Iris(target:Object = null)...{
//调用父类的构造函数
super(target);
//指定实例类型
instanceClass = IrisInstance;
}
}
}
IrisInstance.as
package
mx.effects.effectClasses
...
{
import mx.controls.SWFLoader;
//扩展MastEffectInstance
public class IrisInstance extends MaskEffectInstance...{
//包含flex的版本说明文件
include "../../core/Version.as";
//构造函数
public function IrisInstance(target:Object)...{
super(target);
}
//覆盖父类的方法
override protected function initMaskEffect():void...{
//调用父类的同名方法
super.initMaskEffect();
//得到目标的实际尺寸,targetVisualBounds包含了目标可视区域的长和宽
var targetWidth:Number = targetVisualBounds.width / Math.abs(target.scaleX);
var targetHeight:Number = targetVisualBounds.height / Math.abs(target.scaleY);
//如果目标是SWFLoader对象,则计算加载内容的尺寸,而不是目标本身的尺寸
if (target is SWFLoader)...{
targetWidth = target.contentWidth;
targetHeight = target.contentHeight;
}
//如果showTarget为true,表示显示目标对象
if (showTarget)...{
//定义x,y方向的起始放缩值
scaleXFrom = 0;
scaleYFrom = 0;
scaleXTo = 1;
scaleYTo = 1;
//目标的起始位置
xFrom = targetWidth / 2 + targetVisualBounds.x;
yFrom = targetHeight / 2 + targetVisualBounds.y;
//确定最后的坐标
xTo = targetVisualBounds.x;
yTo = targetVisualBounds.y;
}else...{
//如果是隐藏目标
scaleXFrom = 1;
scaleYFrom = 1;
scaleXTo = 0;
scaleYTo = 0;
//目标的起始位置
xFrom = targetVisualBounds.x;
yFrom = targetVisualBounds.y;
//确定最后的坐标
xTo = targetWidth / 2 + targetVisualBounds.x;
yTo = targetHeight / 2 + targetVisualBounds.y;
}
}
}
}
1648

被折叠的 条评论
为什么被折叠?



