Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вращение объекта в сторону мыши (http://www.flasher.ru/forum/showthread.php?t=157420)

TechnoBoy 05.06.2011 16:15

Вращение объекта в сторону мыши
 
Всем привет! Есть такая проблема - пишу вот такой код для того чтобы объект поворачивался в сторону мыши

Код AS3:

 
object.addEventListener(MouseEvent.MOUSE_MOVE, mouseMovik);       
 
function mouseMovik(e:MouseEvent):void
 
{                       
  var xl:Number = e.stageX - object.x;
  var yl:Number = e.stageY -object.y;
 
  _angle = (Math.atan2(yl, xl)) * (180/ Math.PI);                                               
  object.rotation = _angle;
}

Но хочется чтобы

1)все это действие происходило при не сразу при наведении мыши на объект, а при нажатии на объект и потом, чтобы при отпускании вращение останавливалось

2)Чтобы вращение плавно происходило. Думал задать скорость вращению, но мозги лопаются - как это реализовать)

КорДум 05.06.2011 17:45

2. можно обратиться к Стормиту: http://xitri.com/2009/02/27/vospomin....html#more-136

Dukobpa3 05.06.2011 20:43

Код AS3:

object.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);        
object.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);       
 
 
function onMouseDown(e:MouseEvent):void
{                       
  addEventListener(Event.ENTER_FRAME, mouseMovik);       
}
 
function onMouseDown(e:MouseEvent):void
{                       
  removeEventListener(Event.ENTER_FRAME, mouseMovik);       
}
 
function mouseMovik(e:Event):void
{                       
  var xl:Number = e.stageX - object.x;
  var yl:Number = e.stageY -object.y;
 
  _angle = (Math.atan2(yl, xl)) * (180/ Math.PI);                                               
  object.rotation = _angle;
}

Собственно тут всё в одном и плавность и нажатия мышки.
Еще большую плавность надо твинами делать.

Вот это поменять на анимированный переход
Код AS3:

   object.rotation = _angle;

напрмер такой:
Код AS3:

TweenLite.to(object, 0.1, {rotation:_angle}); 
//время подобрать надо, а то очевидно что  от мышки будет отставать,
//так надо чтоб не сильно отставало


goodguy 05.06.2011 21:14

Эта хрень будет не правильно крутиться. Допустим повернут у тебя объект на 350 градусов, а мышь ты поднесешь на 10. В этом случае он не повернется на 20 градусов в большую сторону, а будет тупо крутиться в сторону убывания почти на полный оборот.
Я решал эту проблему. Код позже выложу

КорДум 05.06.2011 21:15

Да у Стормита все сделано как надо. Портировать и пользоваться.

Dukobpa3 05.06.2011 21:25

Я с твинером прогнал очень сильно, не катит сюда эта идея, хитри рулит, да.
если твинеры вешать по ентерфрейму то флешка висеть начнет.

samana 05.06.2011 22:11

Всё с твинами будет хорошо если использовать shortRotation
Код AS3:

TweenMax.to(clip, 2, { shortRotation: { rotation:ang }} );



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

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