Forked from: nutsu's BitmapDataSample7 diff:1 forked from: BitmapDataSample7 hacker_szoe5.. forked:0favorite:0lines:56license : MIT License modified : 2010-05-30 20:10:15 Embed Tweet // forked from nutsu's BitmapDataSample7 // forked from nutsu's BitmapDataSample5 // forked from nutsu's BitmapDataSample4 // forked from nutsu's BitmapDataSample3 // forked from nutsu's BitmapDataSample1 package { import flash.display.Sprite; import flash.display.BitmapData; import flash.display.Bitmap; import flash.geom.Matrix; import flash.geom.ColorTransform; import flash.display.BlendMode; import flash.filters.BlurFilter; import flash.events.Event; import flash.events.MouseEvent; [SWF(width=465,height=465,backgroundColor=0,frameRate=30)] public class BitmapDataSample7 extends Sprite { private var bmpdata:BitmapData; private var sprite:Sprite; private var matrix:Matrix; private var colortrans:ColorTransform; private var filter:BlurFilter; public function BitmapDataSample7() { //BitmapDataを作成して表示リストに追加 bmpdata = new BitmapData( 465, 465, false, 0 ); addChild( new Bitmap(bmpdata) ); //グラフィックの生成 sprite = newFig( 0, 0, 40, 0xFFFFFF ); //Matrix,ColorTransformの初期化 matrix = new Matrix(); colortrans = new ColorTransform(); //エフェクトの初期化 filter = new BlurFilter(2, 2, 1); //イベント addEventListener( Event.ENTER_FRAME, enterframe ); stage.addEventListener( MouseEvent.CLICK, reset ); } private function enterframe(e:Event):void { //エフェクトの適用 bmpdata.applyFilter( bmpdata, bmpdata.rect, bmpdata.rect.topLeft, filter ); //変形 matrix.identity(); var s:Number = Math.random()*2; matrix.scale( s, s ); matrix.rotate( Math.PI * Math.random() ); matrix.translate( mouseX, mouseY ); //色変換 colortrans.greenMultiplier = mouseX / 465; colortrans.blueMultiplier = mouseY / 465; colortrans.alphaMultiplier = Math.random(); //BitmapDataへ描画 bmpdata.draw( sprite, matrix, colortrans, BlendMode.ADD ); } private function reset(e:MouseEvent):void { bmpdata.fillRect( bmpdata.rect, 0xFF000000 ); } private function newFig( cx:Number, cy:Number, size:Number, col:uint ):Sprite { //中心(cx,cy), 幅高さsize, 色col のグラフィックを生成 var shape:Sprite = new Sprite(); shape.graphics.lineStyle( 0, 0x000000, 0.3 ); shape.graphics.beginFill( col ); shape.graphics.drawCircle( cx, cy, size*0.5 ); shape.graphics.drawCircle( cx, cy, size*0.4 ); var w:Number = size * 0.6; var h:Number = size * 0.15; shape.graphics.drawRect( cx - w/2, cy - h/2, w, h ); shape.graphics.endFill(); return shape; } } } Code Fullscreen Preview Fullscreen filter greenMultiplier alphaMultiplier blueMultiplier ColorTransform BlendMode.ADD BlurFilter MouseEvent.CLICK MouseEvent.ENTER_FRAME MouseEvent Math.PI Math.random uint Number