Bitmap(Data)とFiltersの練習

by Nowloading_
♥0 | Line 42 | Modified 2011-02-24 22:06:32 | MIT License
play

ActionScript3 source code

/**
 * Copyright Nowloading_ ( http://wonderfl.net/user/Nowloading_ )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/4ZvM
 */

package {
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.display.Bitmap;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.BlurFilter;    
    public class FlashTest extends Sprite {
        private var canvas:BitmapData;
        private var color:uint;1
        private var size:Number = 50;
        private var density:Number = 50;  //密度
        
        public function FlashTest() {
            init();            
        }
        
        private function init():void{
            canvas = new BitmapData(stage.stageWidth,stage.stageHeight,
                                        true,0x00000000);
            var bmp:Bitmap = new Bitmap(canvas);
            //filtersの設定
            bmp.filters = [new BlurFilter(2,2,3)]
            addChild(bmp);
            stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);            
        }
        private function onMouseDown(e:MouseEvent):void{
            color = Math.random()*0xffffff + 0xff000000;
            addEventListener(Event.ENTER_FRAME,onEnterFrame);            
        }
        private function onMouseUp(e:MouseEvent):void{
            removeEventListener(Event.ENTER_FRAME,onEnterFrame);
        }
        private function onEnterFrame(e:Event):void{
            for(var i:int = 0; i<density; i++){
                var angle:Number = Math.random() * Math.PI*2;
                var radius:Number = Math.random() * size;
                var xpos:Number = mouseX + Math.cos(angle)*radius; 
                var ypos:Number = mouseY + Math.sin(angle)*radius;
                canvas.setPixel32(xpos,ypos,color);
            }
        }
    }
}