topical media & game development

talk show tell print

#graphic-flex-image-effects-03-Flex-DrawTest.ax

#graphic-flex-image-effects-03-Flex-DrawTest.ax [swf] [flash] flex


  package {
  
          import flash.display.Bitmap;
          import flash.display.BitmapData;
          import flash.display.Sprite;
          import flash.events.KeyboardEvent;
          import flash.geom.ColorTransform;
          import flash.geom.Matrix;
          import flash.ui.Keyboard;
  
          [SWF(width=600, height=400, backgroundColor=0x000000)]
  
          
Demonstrates BitmapData's draw() command by duplicating the entirety of the stage using draw() whenever the space bar is pressed. A smaller copy is also drawn onto the stage to show how draw() can be used to transform the pixels in the image being drawn.

  
          public class @ax-graphic-flex-image-effects-03-Flex-DrawTest extends Sprite {
  
                  private var _circle:Sprite;
                  private var _bitmapData:BitmapData;
  
                  
Constructor. Creates bitmap that will be drawn into and circle that will follow the mouse. A listener is also set up to handle then a key is pressed.

  
                  public function @ax-graphic-flex-image-effects-03-Flex-DrawTest() {
                          createBitmap();
                          createCircle();
                          stage.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown);
                  }
  
                  
Creates bitmap data that the stage contents will be drawn into and adds this to the stage.

  
                  private function createBitmap():void {
                          _bitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
                          var bitmap:Bitmap = new Bitmap(_bitmapData);
                          addChild(bitmap);
                  }
  
                  
Creates a circle shape that is set to follow the mouse as it moves.

  
                  private function createCircle():void {
                          _circle = new Sprite();
                          _circle.graphics.beginFill(0xFF0000);
                          _circle.graphics.drawCircle(0, 0, 25);
                          _circle.graphics.endFill();
                          addChild(_circle);
                          _circle.x = stage.mouseX;
                          _circle.y = stage.mouseY;
                          _circle.startDrag();
                  }
  
                  
Handler for when a key is pressed. If it is the space bar, the current stage view is drawn into bitmap.
parameter: event Event dispatched by stage.

  
                  private function onStageKeyDown(event:KeyboardEvent):void {
                          if (event.keyCode == Keyboard.SPACE) {
                                  _bitmapData.draw(stage);
                                  // added in step 2, this enables the scaling down of a smaller copy of the stage image data
                                          var matrix:Matrix = new Matrix();
                                          matrix.scale(.5, .5);
                                  // added in step 3, this moves the smaller copy to the lower right corner of the bitmap
                                          matrix.translate(300, 200);
                                  // added in step 4, this inverts the colors of the smaller copy
                                          var transform:ColorTransform = new ColorTransform(-1, -1, -1, 1, 255, 255, 255);
                                          _bitmapData.draw(stage, matrix, transform);
                                  // transform the current color of the circle
                                  transform = new ColorTransform();
                                  transform.color = Math.random()*0xFFFFFF;
                                  _circle.transform.colorTransform = transform;
                          }
                  }
  
          }
  
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.