All pastes #383050 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-03-06 02:18 UTC
rendered paste body
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;
		}
	}
}