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

Регистрация: Apr 2012
Сообщений: 8
По умолчанию Пытаюсь сделать регулятор

Доброго времени суток.
Необходимо сделать ручку регулятора, которая бы вращалась за курсором только при зажатой ПКМ. Т.е. наводим курсор на регулятор, зажимай ПКМ, двигаем курсор куда хотим по всей сцене и регулятор вертится за мышью. Отпускаем ПКМ и регулятор перестает вращаться за мышью. Соответсвенно на клик ПКМ вне области регулятора он не реагирует.
Вот что у меня получилось
Код AS3:
var m_roll:M_roll= new M_roll();   
addChild(m_roll);
var temp_roll:int=0;
 
m_roll.addEventListener(MouseEvent.MOUSE_MOVE, RotationCircle);
		 function RotationCircle(e:MouseEvent):void
 {	 
         m_roll.addEventListener(MouseEvent.MOUSE_DOWN, RotationCircleDown);
		 function RotationCircleDown(e:MouseEvent):void
      {
		  temp_roll=1
	  }
	    m_roll.addEventListener(MouseEvent.MOUSE_UP, RotationCircleUp);
		 function RotationCircleUp(e:MouseEvent):void
      {
		  temp_roll=0
	  }
 
		  if(temp_roll==1)
		  {
         var    X:Number = m_roll.x;
         var    Y:Number = m_roll.y;
         var   mX:Number = mouseX;
         var   mY:Number = mouseY;
         var   AB:Number;
         var   OB:Number;
         var sina:Number;
         var    a:Number;
 
            AB = Math.abs(X - mX);
            OB = Math.abs(Math.sqrt(Math.pow(X - mX ,2) + Math.pow(Y - mY ,2)));
          sina = AB / OB;
             a = Math.asin(sina) * 180 / Math.PI;
 
            if (Y >= mY && X <= mX)
            {
               m_roll.rotation = a;
            } else
            if (Y < mY && X <= mX)
            {
               m_roll.rotation = 180 - a;
            } else
            if (Y >= mY && X > mX)
            {
               m_roll.rotation = 360 - a;
            } else
            if (Y < mY && X > mX)
            {
               m_roll.rotation = 180 + a;
            }
  }
 }
где m_roll клип с изображением ручки регулятора.
Только есть некоторые проблемки.
1) Регулятор вращается только при курсоре в его области.
2) Если отжать ПКМ за областью регулятора, то он будет вращаться без клика при возвращении курсора в его область
3) Хотелось бы "цеплять" регулятор в любом месте. в моем же случае он резко вращается к курсору при клике.
Посьба сильно не пинать, с AS только знакомлюсь