package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.MouseEvent; [SWF(width=600, height=400, backgroundColor=0x000000)] /** * Simple drawing application using setPixel32() to color 5 pixels around the mouse position. */ public class graphic_flex_image_effects_03_Flex_SetPixelTest extends Sprite { private var _canvas:BitmapData; /** * Constructor. This creates the bitmap data that will be drawn into and sets up listeners * for when the mouse is pressed and released on the stage. */ public function graphic_flex_image_effects_03_Flex_SetPixelTest() { _canvas = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000); var bitmap:Bitmap = new Bitmap(_canvas); addChild(bitmap); stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageMouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUp); } /** * Handler for when the mouse is depressed on the stage. * This sets up a listener for when the mouse moves. * * @param event Event dispatched by stage. */ private function onStageMouseDown(event:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE, onStageMouseMove); } /** * Handler for when the mouse is released on the stage. * This removes the listener for when the mouse moves. * * @param event Event dispatched by stage. */ private function onStageMouseUp(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, onStageMouseMove); } /** * Handler for when the mouse is moved about the stage. * This colors five pixels on or around the mouse position. * * @param event Event dispatched by stage. */ private function onStageMouseMove(event:MouseEvent):void { var x:Number = event.localX; var y:Number = event.localY; // how far out from the mouse position the four periphery points are colored var radius:uint = 10; // don't update the bitmap until unlock is called _canvas.lock(); _canvas.setPixel32(x, y, 0xFFFFFFFF); _canvas.setPixel32(x+radius, y, 0xFFFF0000); _canvas.setPixel32(x-radius, y, 0xFF00FF00); _canvas.setPixel32(x, y+radius, 0xFF0000FF); _canvas.setPixel32(x, y-radius, 0xFFFF00FF); _canvas.unlock(); event.updateAfterEvent(); } } }