[ActionScript 3.0] AS3实现滤镜叠加效果

import flash.display.BitmapData;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
addChild(new Bitmap(overlapFilter(new 元件1(),5,1)));

function overlapFilter(obj:DisplayObject, dist:Number, qual:Number):BitmapData
{
    var width0:Number = obj.width+(dist*0.05*obj.width)+4;
    var height0:Number = obj.height+(dist*0.05*obj.height)+4;
    var out:BitmapData = new BitmapData(width0,height0,true,0x00000000);
    var buffer:BitmapData = new BitmapData(width0,height0,true,0x00000000);
    var blur:BlurFilter = new BlurFilter(3,3,qual);
    var cmat:ColorTransform = new ColorTransform(1,1,1,0.2,0,0,0,0);
    var mat:Matrix = new Matrix();
    var step:Number;
    for (var i:Number = dist+20; i>1; i--) {
        step = 0.05 * i;
        mat.identity();
        mat.scale(step,step);
        mat.translate(width0/2-obj.width*step/2,height0/2-obj.height*step/2);
        buffer.fillRect(buffer.rect,0x00000000);
        buffer.draw(obj,mat);
        buffer.applyFilter(buffer,buffer.rect,new Point,blur);
        mat.identity();
        out.draw(buffer,mat,cmat);
    }
    mat.identity();
    mat.translate(dist*0.05*obj.width/2+2,dist*0.05*obj.height/2+2);
    cmat.alphaMultiplier = 0.3;
    buffer.dispose();
    out.draw(obj,mat,cmat,null,null,true);
    return out;
}
时间: 2024-10-11 06:27:25

[ActionScript 3.0] AS3实现滤镜叠加效果的相关文章

[ActionScript 3.0] as3处理xml的功能和遍历节点

as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象时,ActionScript 会分析数据并将其分层结构加载到内存(如果 XML 数据格式有误,它会发送运行时错误). 利用 XML 和 XMLList 对象的运算符和方法可以轻松遍历 XML 数据的结构. 1.读取外部 XML 文档 可以使用 URLLoader 类从 URL 加载 XML 数据.若

[ActionScript 3.0] AS3动画类Tweener中滤镜的运用

package { import caurina.transitions.Tweener; import caurina.transitions.properties.FilterShortcuts; import caurina.transitions.properties.TextShortcuts; import flash.display.Sprite; import flash.text.TextField; /** * @author: Frost.Yen * @E-mail: [e

[ActionScript 3.0] AS3中的位图(BitmapData)应用

1.位图使用(模糊)滤镜 //创建一个矩形区域的BitmapData var bmd:BitmapData = new BitmapData(80, 30, false, 0xffffff); //画个红色的矩形 var rect:Rectangle = new Rectangle(20, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); //找到红色矩形的右上顶点 var pt:Point = new Point(rect.left, rect.top);

[ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains

简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时候,默认的设置工作的很好,你甚至不知道他们的存在. 但是某些时候你可能需要控制默认设置以外的更多行为和功能,这样你就会遇到前面所说的问题.你也许会困扰于Security.allowDomain和crossdomain.xml文件的区别,又或者你想要深究关于安全性的最佳实践.如果是这样,那么这篇文章就

[ActionScript 3.0] AS3.0和AS2.0的相互通信

AS3和AS2之间的通信,最好的方式可能就是LocalConnection了. AS2向AS3发送数据,即AS2调用AS3的函数: as2.0代码(按钮上写的发送信息代码): on (release) { var param = "this message is from as2"; var caller:LocalConnection = new LocalConnection(); caller.send("AS2 send to AS3","funI

[ActionScript 3.0] AS3虚线绘制方法

import flash.geom.Point; import flash.display.MovieClip; import flash.display.Graphics; var mc:MovieClip=new MovieClip(); addChild(mc); drawDashed(mc,new Point(100,100),new Point(500,100),5,5); function drawDashed(mc:Sprite,p1:Point,p2:Point,length:N

[ActionScript 3.0] AS3 对XML的操作,创建、删除、增加节点方法

package { import flash.display.Sprite; /** * @author:Frost.Yen * @E-mail:[email protected] * @create: 2016-3-11 上午11:31:11 * */ public class OperateXML extends Sprite { private var _xml:XML = <data> <item>item1</item> <item>item2&l

[ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠

import flash.geom.Rectangle; import flash.display.MovieClip; import flash.display.Sprite; var arr:Array = []; var dis:Number = 20;//间距 var len:int=15;//对象数量 var bound:Rectangle = new Rectangle(0,0,1000,800);//显示范围 for(var i:int = 0;i<len;i++){ var ob

[ActionScript 3.0] AS3 绘制立方体

1 package 2 { 3 import flash.display.Sprite; 4 import flash.events.Event; 5 import flash.geom.Vector3D; 6 import flash.text.TextField; 7 import flash.text.TextFormat; 8 9 /** 10 * @author Frost.Yen 11 * @E-mail [email protected] 12 * @create 2015-9-2