Iris动画效果的代码

来源:互联网 发布:js求两个数最大公约数 编辑:程序博客网 时间:2024/05/16 05:17

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

    }

}


}

 

原创粉丝点击