画用紙にお絵かき perlinNoiseとかConvolutionFilterフィルタとか okoi forked:0favorite:18lines:70license : MIT License modified : 2012-02-06 19:22:44 Embed Tweet package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.BlurFilter; import flash.filters.ConvolutionFilter; import flash.geom.Matrix; import flash.geom.Point; [SWF(width = "465", height = "465", frameRate = "60")] /** * ... * @author okoi */ public class Main extends Sprite { public static const WIDTH:int = 465; public static const HEIGHT:int = 465; private var paper:BitmapData; private var isDrawing:Boolean = false; private var _bx:Number = 0; private var _by:Number = 0; private var _line:Shape = new Shape(); private var _tmp_canvas:BitmapData; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point paper = new BitmapData(WIDTH, HEIGHT, true, 0); paper.perlinNoise( 2, 2, 1, int(Math.random() * 256), false, false, 1, true, [new Point()] ); paper.applyFilter( paper, paper.rect, new Point(), new BlurFilter(2,2) ); var filterMat:Array = [ 0.5, 0, 0, 0, 0, 0, 0, 0, -0.5 ]; var filter:ConvolutionFilter = new ConvolutionFilter( 3, 3, filterMat, 1, 200 ); paper.applyFilter( paper, paper.rect, new Point(), filter ); addChild( new Bitmap(paper) ); _tmp_canvas = new BitmapData( WIDTH, HEIGHT, true, 0 ); addEventListener( Event.ENTER_FRAME, _enterFrameHandler ); stage.addEventListener(MouseEvent.MOUSE_DOWN, _mouseDownHandler ); stage.addEventListener(MouseEvent.MOUSE_UP, _mouseUpHandler ); } private function _enterFrameHandler( e:Event ) : void { if ( isDrawing ) { //if ( !(Math.abs( _bx - stage.mouseX ) < 0.1 || Math.abs( _by - stage.mouseY) < 0.1 ) ) { _line.graphics.clear(); _line.graphics.lineStyle( 20 + (Math.random() * 10 - 5), 0 ); _line.graphics.moveTo( _bx, _by ); _line.graphics.lineTo( stage.mouseX, stage.mouseY ); _tmp_canvas.draw( _line ); _tmp_canvas..pixelDissolve( _tmp_canvas, _tmp_canvas.rect, new Point(), Math.random() * 5, WIDTH * HEIGHT * 0.3, 0x00000000 ); paper.draw( _tmp_canvas ); _bx = stage.mouseX; _by = stage.mouseY; //} } } private function _mouseDownHandler( e:MouseEvent ) : void { _bx = stage.mouseX; _by = stage.mouseY; isDrawing = true; } private function _mouseUpHandler( e:MouseEvent ) : void { isDrawing = false; } } } Code Fullscreen Preview Fullscreen hank5678 firefly.lhy bradsedito fallen majoraze siouxcitizen.. hacker_xdv5g.. clockmaker ProjectNya n0wri Mingchoi taomengyu : painting文字 aobyrne : brushdrawingpainting korooooon : 線 hidrodixtion.. : awesomebitmapdatafilter BunBunBun : cool effect bkzen : 匠 saharan : takumi awesome bitmapdata brush drawing filter painting takumi 文字 線 ConvolutionFilter mouseY mouseX filter MouseEvent.ADDED_TO_STAGE stage addEventListener Point MouseEvent removeEventListener MouseEvent.MOUSE_UP MouseEvent.MOUSE_DOWN MouseEvent.ENTER_FRAME addChild Boolean Math.random Array Sprite Number int