Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 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 только знакомлюсь

Создать новую тему   Часовой пояс GMT +4, время: 02:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.