package { import flash.display.MovieClip; import flash.display.Shape; import flash.events.MouseEvent; import flash.events.Event; public class Desktop extends MovieClip { var bgImage:Shape = new Shape(); var held = false; var initalAngle:Number; public function Desktop() { bgImage.graphics.beginFill("0x330000"); bgImage.graphics.drawRect(-500, -500, 1000, 1000); bgImage.graphics.endFill(); addChild(bgImage); this.useHandCursor = true; addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); addEventListener(MouseEvent.MOUSE_UP, mouseUp); addEventListener(Event.ADDED, added); addEventListener(MouseEvent.MOUSE_MOVE, mouseMove); } private function atand(nx:Number, ny:Number):Number { if(Math.abs(nx) < Math.pow(10,-6)) { if(Math.abs(ny) < Math.pow(10,-6)) return 0; if(ny > 0) return 90; if(ny < 0) return 270; if (nx > 0) { if (ny >= 0) return (180 * Math.atan(ny / nx) / Math.PI); if (ny < 0) return (180 * Math.atan(ny / nx) / Math.PI - (-1) * 360); if (nx < 0) { if (ny >= 0) return (180 - 180 * Math.atan(-ny / nx) / Math.PI); if (ny<0) return (-180 - (-1) * 180 * Math.atan(ny / nx) / Math.PI - (-1) * 360); } } } } private function mouseMove(event:Event) { if(held) { var angle = Math.atan2((stage.mouseX - x), (stage.mouseY - y)) - initalAngle; if (angle < 0) angle = 2 * Math.PI + angle; angle *= (180/Math.PI); trace(angle); rotation += -angle + initalAngle; } } private function added(event:Event) { x = stage.stageWidth/2; y = stage.stageHeight/2; } private function mouseDown(event:MouseEvent) { initalAngle = Math.atan2((stage.mouseX - x), (stage.mouseY - y)); held = true; } private function mouseUp(event:MouseEvent) { initalAngle = 0; held = false; } } }