simple bitmap Effect
/**
* Copyright J.J ( http://wonderfl.net/user/J.J )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/kM36
*/
package {
import flash.geom.ColorTransform;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.display.Shape;
import flash.filters.ConvolutionFilter;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.events.Event;
import flash.display.Sprite;
/**
* @author Javid Jafari
*/
public class testwater extends Sprite {
private var h : int;
private var w : int;
private var mainbmp : Bitmap;
private var chromeFilter : ConvolutionFilter;
private var shape : Shape;
private var bmpBuffer : BitmapData;
private var blackfilter : ConvolutionFilter;
private var isBlack : Boolean = true;
private var blurFilter : BlurFilter;
private var p : Point;
private var colors : ColorTransform;
public function testwater() {
if(stage) inits()
else addEventListener(Event.ADDED_TO_STAGE, inits)
}
private function inits(event : Event=null ): void {
w=stage.stageWidth ,h=stage.stageHeight
mainbmp=new Bitmap(null);
mainbmp.bitmapData=new BitmapData(w, h,false,0x000000)
addChild(mainbmp)
shape=new Shape()
with(shape.graphics){
beginFill(0xffffff)
drawCircle(0, 0, 22)
endFill()
}
shape.filters=[new BlurFilter(20,20)]
var matrix:Matrix=new Matrix()
matrix.translate(mainbmp.bitmapData.width/2, mainbmp.bitmapData.height/2)
bmpBuffer=new BitmapData(w, h,false,0x000000)
bmpBuffer.draw(shape,matrix)
var chromeMatrix:Array=[0.05, 1,
0.05, 1,
0, 1,
0.05, .1,
0.05]
chromeFilter=new ConvolutionFilter(3, 3,chromeMatrix, 3);
var blackMatrix:Array=[
1,1,1,
1,-.1,1,
1,1,1
]
blackfilter=new ConvolutionFilter(3,3,blackMatrix,9)
blurFilter=new BlurFilter(50,50)
p=new Point()
colors=new ColorTransform()
addEventListener(Event.ENTER_FRAME, loop)
stage.addEventListener(MouseEvent.MOUSE_MOVE, mousemovie)
}
private function mousemovie(event : MouseEvent) : void {
colors.redMultiplier=Math.random()
colors.greenMultiplier=Math.random()
colors.blueMultiplier=Math.random()
if(isBlack) bmpBuffer.draw(shape,new Matrix(1, 0,
0, 1,
mouseX , mouseY ),colors)
}
private function loop(event : Event) : void {
if(mainbmp.bitmapData.getPixel(0, 0)==0xffffff && mainbmp.bitmapData.getPixel(w-1,h-1)==0xffffff && mainbmp.bitmapData.getPixel(w-1,0)==0xffffff && mainbmp.bitmapData.getPixel(0,h-1)==0xffffff){
isBlack=false
removeEventListener(Event.ENTER_FRAME, loop)
addEventListener(Event.ENTER_FRAME, checkBlackPoint)
function checkBlackPoint():void{
mainbmp.bitmapData.applyFilter(bmpBuffer, mainbmp.bitmapData.rect, p,blackfilter)
if(mainbmp.bitmapData.getPixel(0, 0)==0x000000) {
removeEventListener(Event.ENTER_FRAME, checkBlackPoint)
addEventListener(Event.ENTER_FRAME, loop)
isBlack=true
}
}
}
else {
mainbmp.bitmapData.applyFilter(bmpBuffer, mainbmp.bitmapData.rect, p,blurFilter)
mainbmp.bitmapData.applyFilter(bmpBuffer, mainbmp.bitmapData.rect, p,chromeFilter)
}
bmpBuffer=mainbmp.bitmapData
}
}
}