鼠标点击波纹效果

 

鼠标点击波纹效果

import flash.display.BitmapData;

import flash.geom.Rectangle;

import flash.geom.Point;

import flash.geom.Matrix;

import flash.filters.ConvolutionFilter;

import flash.geom.ColorTransform;

import flash.filters.DisplacementMapFilter;

import flash.display.Sprite;

import flash.display.Bitmap;

import flash.events.MouseEvent;

import flash.events.Event;

 

stage.frameRate=30;

//定义影片的刷新频率

var pwidth:Number=550;

var pheight:Number=400;

//定义影片的宽和高

var bgimg:Bgimg=new Bgimg();//Bgimg是舞台中元件的类名

//创建背景图像类的实例

 

Var appearance:BitmapData=new BitmapData(pwidth,pheight,true);

//创建位图数据用于绘制水的表面

var ores:BitmapData=new BitmapData(pwidth,pheight,false,128);

//创建位图数据用于绘制第一层波纹

var ores2:BitmapData=new BitmapData(pwidth*2,pheight*2,false,128);

//创建位图数据用于绘制第二层波纹

var psour:BitmapData=new BitmapData(pwidth,pheight,false,128);

//创建位图数据用于载入背景图像

var lbuff:BitmapData=new BitmapData(pwidth,pheight,false,128);

//创建位图数据用于实现缓冲

var poutp:BitmapData=new BitmapData(pwidth*2,pheight*2,true,128);

//创建位图数据用于实现输出波纹

 

var waveRect:Rectangle=new Rectangle(0,0,pwidth,pheight);

//创建波纹荡漾的矩形边界用于反弹波纹

var spoint:Point=new Point();

//创建鼠标单击波纹的起点

var tranmatr:Matrix=new Matrix();

//创建转换矩阵的起点

var tranmatr2:Matrix=new Matrix();

//创建转换矩阵的终点

tranmatr2.a=tranmatr2.d=2;

//将载入的图像映射到输出的转换矩阵中

 

Var wave:ConvolutionFilter=new ConvolutionFilter(3,3,[1,1,1,1,1,1,1,1,1],9,0);

//创建卷积滤镜对象

//var trans:ColorTransform=new ColorTransform(0,0,9.960937E-001,1,0,0,2,0);

var trans:ColorTransform=new ColorTransform(0,0,0.996,1,0,0,2,0);

//创建颜色转换对象

var water:DisplacementMapFilter=new DisplacementMapFilter(ores2,spoint,4,4,96,96,"ignore");

//创建位图置换对象

var leftpress:Boolean=false;

//判断鼠标左键是否被按下

 

var bg:Sprite=new Sprite();

//创建背景的构造显示对象

this.addChild(bg);

//定义构造显示对象显示于影片中

bg.graphics.beginFill(0xFFFFFF,0);

//在构造显示对象中开始填充色块,定义色块颜色

bg.graphics.drawRect(0,0,pwidth,pheight);

//在构造显示对象中填充矩形

bg.graphics.endFill();

//结束填充

this.addChild(new Bitmap(poutp));

//输出填充的位图

 

function loadpic():void{

 appearance.draw(bgimg,null,null,null,null,true);

 //在表面位图中绘制导入的对象

 this.addEventListener(MouseEvent.MOUSE_DOWN,mousedown);

 this.addEventListener(MouseEvent.MOUSE_UP,mouseup);

 this.addEventListener(Event.ENTER_FRAME,movieframe);

}

function mousedown(e:MouseEvent):void{

 leftpress=true;

 //判断,鼠标按下为真

}

function mouseup(e:MouseEvent):void{

 leftpress=false;

 //判断鼠标按下为假

}

function movieframe(e:Event):void{

 if(leftpress){

  var xx:Number=this.mouseX/2;

  var yy:Number=this.mouseY/2;

  psour.setPixel(xx+1,yy,16777215);

  psour.setPixel(xx-1,yy,16777215);

  psour.setPixel(xx,yy+1,16777215);

  psour.setPixel(xx,yy-1,16777215);

  psour.setPixel(xx,yy,16777215);

  //设置单个像素的位置和颜色

 }

 ores.applyFilter(psour,waveRect,spoint,wave);

 //对ores对象应用卷积滤镜

 ores.draw(ores,tranmatr,null,BlendMode.ADD);

 //在ores对象上绘制ores对象

 ores.draw(lbuff,tranmatr,null,BlendMode.DIFFERENCE);

 //在ores对象上绘制lbuff对象

 ores.draw(ores,tranmatr,trans);

 //在ores对象上绘制ores对象

 ores2.draw(ores,tranmatr2,null,null,null,true);

 //在ores2对象上绘制ores对象

 poutp.applyFilter(appearance,new Rectangle(0,0,pwidth*2,pheight*2),spoint,water);

 //为poutp对象应用卷积滤镜

 lbuff=psour;

 psour=ores.clone();

 //创建psour对象的副本

}

 

loadpic();

转载于:https://www.cnblogs.com/sunmmbk/archive/2012/10/15/2725033.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值