package { import flash.display.Sprite; import flash.events.Event; public class Marker extends Sprite { private var _startX:Number = -1; private var _startY:Number = -1; private var _color:uint = 0; private var _thickness:Number = 0; private var _centerOnStage:Boolean = false; public function Marker(xPos:*, yPos:Number=0, color:uint=0xFF0000, thickness:Number = 3) { if (xPos is Boolean) { // center on stage _centerOnStage = true; } else { // custom position _startX = xPos; _startY = yPos; } _color = color; _thickness = thickness; addEventListener(Event.ADDED_TO_STAGE, startup); } private function startup(e:Event) { removeEventListener(Event.ADDED_TO_STAGE, startup); addEventListener(Event.REMOVED_FROM_STAGE, shutdown); this.graphics.lineStyle(_thickness,_color); // draw horizontal line this.graphics.moveTo(-10, 0); this.graphics.lineTo(10, 0); //draw vertical line this.graphics.moveTo(0, -10); this.graphics.lineTo(0, 10); if (_centerOnStage) { stage.addEventListener(Event.RESIZE, onStageResized); centerPosition(); } else { this.x = _startX; this.y = _startY; } this.parent.setChildIndex(this,this.parent.numChildren-1); } private function shutdown(e:Event) { removeEventListener(Event.REMOVED_FROM_STAGE, shutdown); stage.removeEventListener(Event.RESIZE, onStageResized); } private function centerPosition() { this.x = Math.round(stage.stageWidth/2); this.y = Math.round(stage.stageHeight/2); } private function onStageResized(e:Event) { centerPosition(); } } }