package { /** * @author daniwell * http://www.papiness.com/ */ import flash.display.BitmapData; import flash.display.DisplayObject; import flash.geom.Matrix; public class DotFilter { private var bmd :BitmapData; public function DotFilter () { } public function setArray ( ar :Array ) :void { var yoko :int = ar[0].length; var tate :int = ar.length; bmd = new BitmapData( yoko, tate, true, 0xffffff ); for ( var k :int = 0; k < tate; k ++ ) { for ( var i :int = 0; i < yoko; i ++ ) { if ( ar[k][i] == null ) continue; if ( 0 <= ar[k][i] && ar[k][i] < 16777216 ) ar[k][i] += 4278190080; if ( 16777216 <= ar[k][i] && ar[k][i] <= 4294967295 ) bmd.setPixel32( i, k, ar[k][i] ); } } } public function setObj ( obj :*, initObj :Object = null ) :void { if ( ! initObj ) initObj = new Object(); initObj.x = initObj.x || 0; initObj.y = initObj.y || 0; if ( isNaN(initObj.width) || initObj.width <= 0 ) initObj.width = obj.width - initObj.x; if ( isNaN(initObj.height) || initObj.height <= 0 ) initObj.height = obj.height - initObj.y; bmd = new BitmapData( initObj.width, initObj.height, true, 0xffffff ); bmd.draw( obj, new Matrix( 1, 0, 0, 1, -initObj.x, - initObj.y ) ); } /* obj :Sprite, Shape or MovieClip */ public function setFilter ( obj :*, initObj :Object = null ) :void { if ( ! initObj ) initObj = new Object(); initObj.x = initObj.x || 0; initObj.y = initObj.y || 0; if ( isNaN(initObj.width) || initObj.width <= 0 ) initObj.width = obj.stage.stageWidth; if ( isNaN(initObj.height) || initObj.height <= 0 ) initObj.height = obj.stage.stageHeight; obj.graphics.beginBitmapFill( bmd, null, true, false ); obj.graphics.moveTo( initObj.x, initObj.y ); obj.graphics.lineTo( initObj.x, initObj.y+initObj.height ); obj.graphics.lineTo( initObj.x+initObj.width, initObj.y+initObj.height ); obj.graphics.lineTo( initObj.x+initObj.width, initObj.y ); obj.graphics.endFill( ); } } }