Показать сообщение отдельно
Старый 17.12.2013, 16:26
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 15  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
насколько понял, нужно отличить драг от клика
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
 
	public class Main extends Sprite 
	{
		private var touchP:Point;
		private var currP:Point;
		private var drag:Boolean;
		private var tol:Number = 10;
		private var body:Sprite;
 
		public function Main():void 
		{
			body = new Sprite();
			body.graphics.beginFill(0);
			body.graphics.drawRect(100, 100, 100, 40);
			addChild(body);
 
			body.addEventListener(MouseEvent.MOUSE_DOWN, body_mouseDown);
			body.addEventListener(MouseEvent.CLICK, body_click);
		}
 
		private function body_click(e:MouseEvent):void 
		{
			if (!drag)
			{
				trace("CLICK");
			}
		}
 
		private function body_mouseDown(e:MouseEvent):void 
		{
			stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
			stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
			touchP = new Point(stage.mouseX, stage.mouseY);
			currP = new Point(stage.mouseX, stage.mouseY);
			drag = false;
		}
 
		private function stage_mouseUp(e:MouseEvent):void 
		{
			stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
			stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
		}
 
		private function stage_mouseMove(e:MouseEvent):void 
		{
 
			body.x += stage.mouseX - currP.x;
			body.y += stage.mouseY - currP.y;
 
			currP = new Point(stage.mouseX, stage.mouseY);
			if (Point.distance(currP, touchP) > tol)
			{
				drag = true;
			}
		}
 
	}
 
}
alexandrratush уже в самом начале топика сказал как