以下是天地会的:金牌长老:给出的:使用Bitmap+Matrix实现的:径向+转旋+叠加图层效果的模糊效果。
相信这种效果很多游戏都会用上。
先收藏一下。赞一个!
http://bbs.9ria.com/viewthread.php?tid=69188
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.text.TextField;
import ghostcat.filter.ColorMatrixFilterProxy;
public class aaaa extends Sprite
{
[Embed(source="img1.jpg")]
public var cls:Class;
public var bmd:BitmapData;
public var screen:Bitmap;
public var scale:Number;
public var r:Number;
public function aaaa()
{
bmd = new cls().bitmapData;
screen = new Bitmap(bmd.clone());
addChild(screen);
scale = 1.0;
r = 0.0;
stage.addEventListener(MouseEvent.CLICK,clickHandler);
}
private function clickHandler(event:MouseEvent):void
{
if (hasEventListener(Event.ENTER_FRAME))
{
removeEventListener(Event.ENTER_FRAME,tickHandler);
scale = 1.0;
r = 0.0;
screen.bitmapData = bmd.clone();
}
else
{
addEventListener(Event.ENTER_FRAME,tickHandler);
}
}
private function tickHandler(event:Event):void
{
r += 0.05;
scale *= 1.05;
var m:Matrix = new Matrix();
m.translate(-bmd.width / 2,-bmd.height / 2);
m.scale(scale,scale);
m.rotate(r);
m.translate(bmd.width / 2,bmd.height / 2);
screen.bitmapData.draw(bmd,m,new ColorTransform(1,1,1,0.2),BlendMode.ADD);
}
}
}
第二类:http://bbs.9ria.com/viewthread.php?tid=73048
import flash.display.BitmapData;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
addChild(new Bitmap(getZoomed(new 元件1(),5,1)));
function getZoomed(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;
}
AS3 使用Bitmap+Matrix实现的:径向+转旋+叠加图层效果的模糊效果
关注
打赏