package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class GrowDot extends MovieClip { private var MAX_SCALE:Number; private var farthest:Number; public function GrowDot() { super(); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function onStage(e:Event):void { farthest = distanceSq(0, 0, stage.stageWidth, stage.stageHeight); MAX_SCALE = Math.pow(farthest, .18); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove); } private function onMove(e:MouseEvent):void { var percent:Number = distanceSq(stage.mouseX, stage.mouseY, x, y) / farthest; scaleX = scaleY = MAX_SCALE * percent; } static private function distanceSq(x1:Number, y1:Number, x2:Number, y2:Number) { var dx:Number = x2 - x1; var dy:Number = y2 - y1; return dx*dx + dy*dy; } } }