Показать сообщение отдельно
Старый 12.07.2011, 21:18
1q2w3e4r5t6 вне форума Посмотреть профиль Отправить личное сообщение для 1q2w3e4r5t6 Найти все сообщения от 1q2w3e4r5t6
  № 1  
Ответить с цитированием
1q2w3e4r5t6

Регистрация: Jul 2011
Сообщений: 43
Question Поворот объекта в зависимости от положения курсора мыши на экране

Добрый вечер.
Наверное каждый из вас играл в игры, где нужно с помощью пушки разрушить, например, замок. Так вот в таких играх угол выстрела и его сила определялась положением курсора в приложении (выше курсор - больше угол, дальше курсор от пушки - сильнее выстрел). Хочу сделать подобное, но не получается.
Код AS3:
package Game
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public final class Cannon extends Sprite
	{
		private var cannon:Sprite;
		public function Cannon()
		{
			super();
			cannon = new Sprite();
			cannon.graphics.beginFill(0x000000, 1);
			cannon.graphics.drawRect(10,485,50,10);
			cannon.graphics.drawCircle(10,490,10);
			this.addChild(cannon);
			this.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
		}
 
		private function mouseMoveListener(e:MouseEvent):void
		{
			this.rotation = Math.atan(e.stageY/e.stageX)*180/Math.PI;
			trace(Math.atan(e.stageY/e.stageX)*180/Math.PI)
		}
	}
}
Делаю так: поворачиваю пушку на угол а=arctg(y/x), где x и y - координаты мыши в окне приложения. Но прикол в том, что ничего не поворачивается (иногда даже исчезает...). Подскажите, как правильно сделать?)

PS и как задать точку, относительно которой происходит вращение?