brunoperry

draw/fill as3 BimapData test

Jul 17th, 2011
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import flash.text.TextFieldAutoSize;
  4.     import flash.text.TextField;
  5.     import flash.display.Bitmap;
  6.     import flash.display.BitmapData;
  7.     import flash.display.Sprite;
  8.     import flash.events.Event;
  9.     import flash.events.MouseEvent;
  10.     /**
  11.      * @author perry
  12.      */
  13.     public class Main extends Sprite
  14.     {
  15.         private var bmpd:BitmapData;
  16.         private var canvas:Bitmap;
  17.        
  18.         private var drawColor:int = 0xff0000;
  19.         private var fillColor:int = 0x00ffff;
  20.        
  21.         private var drawing:Boolean;
  22.        
  23.         public function Main()
  24.         {
  25.             init();
  26.         }
  27.        
  28.         private function init():void
  29.         {
  30.             bmpd = new BitmapData( stage.stageWidth, stage.stageHeight, false, 0x00ff00 );
  31.             canvas = new Bitmap( bmpd );
  32.             this.addChild( canvas );
  33.            
  34.             var hitAreas:Sprite = new Sprite();
  35.             hitAreas.graphics.beginFill( 0x0000ff, 0 );
  36.             hitAreas.graphics.drawRect( 0, 0, canvas.width, canvas.height );
  37.             addChild( hitAreas );
  38.            
  39.             addButtons();
  40.            
  41.             drawing = true;
  42.            
  43.             hitAreas.addEventListener( MouseEvent.MOUSE_DOWN, startDrawing );
  44.             hitAreas.addEventListener( MouseEvent.MOUSE_UP, stopDrawing );
  45.         }
  46.        
  47.         private function addButtons():void
  48.         {
  49.             var pencil:Sprite = new Sprite();
  50.             var fill:Sprite = new Sprite();
  51.            
  52.             var ptf:TextField = new TextField();
  53.             ptf.autoSize = TextFieldAutoSize.LEFT;
  54.             ptf.selectable = false;
  55.             ptf.text = "DRAW";
  56.             pencil.addChild(ptf);
  57.            
  58.             var ftf:TextField = new TextField();
  59.             ftf.autoSize = TextFieldAutoSize.LEFT;
  60.             ftf.text = "FILL";
  61.             ptf.selectable = false;
  62.             fill.addChild(ftf);
  63.            
  64.             pencil.graphics.beginFill( 0x888888);
  65.             pencil.graphics.drawRect(0, 0, ptf.width + 5, ptf.height + 5);
  66.             pencil.graphics.endFill();
  67.            
  68.             fill.graphics.beginFill( 0x888888);
  69.             fill.graphics.drawRect(0, 0, ftf.width + 5, ftf.height + 5);
  70.             fill.graphics.endFill();
  71.            
  72.             addChild( pencil);
  73.             fill.y = pencil.height + 10;
  74.             addChild(fill);
  75.            
  76.             pencil.buttonMode = true;
  77.             fill.buttonMode = true;
  78.            
  79.             pencil.addEventListener(MouseEvent.MOUSE_DOWN, pencilDownHandler );
  80.             fill.addEventListener(MouseEvent.MOUSE_DOWN, fillDownHandler );
  81.         }
  82.  
  83.         private function startDrawing( e:MouseEvent ):void
  84.         {
  85.             if(drawing)
  86.                 stage.addEventListener( Event.ENTER_FRAME, loop );
  87.             else
  88.             {
  89.                 bmpd.floodFill(mouseX, mouseY, fillColor);
  90.                 canvas.bitmapData = bmpd;
  91.             }
  92.         }
  93.  
  94.         private function stopDrawing( e:MouseEvent ):void
  95.         {
  96.             if(drawing)
  97.                 stage.removeEventListener( Event.ENTER_FRAME, loop );
  98.         }
  99.  
  100.         private function pencilDownHandler( e:MouseEvent ):void
  101.         {
  102.             drawing = true;
  103.         }
  104.  
  105.         private function fillDownHandler( e:MouseEvent ):void
  106.         {
  107.             drawing = false;
  108.         }
  109.  
  110.         private function loop( e:Event ):void
  111.         {
  112.             bmpd.setPixel(mouseX, mouseY, drawColor );
  113.             bmpd.setPixel(mouseX+1, mouseY, drawColor );
  114.             bmpd.setPixel(mouseX+1, mouseY+1, drawColor );
  115.             bmpd.setPixel(mouseX, mouseY+1, drawColor );
  116.            
  117.             canvas.bitmapData = bmpd;
  118.         }
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment