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