Я использую greensock tweenlite, чтобы щелкать, перетаскивать и вращать круговой муви-клип, и пока у меня есть следующее.
Что мне нужно сделать, так это определить направление вращения и скорость, т.е. если пользователь вращает колесо вправо, сохранить это направление в строковой переменной, а скорость вращения в числовой переменной.
Я пробовал множество разных вещей с координатами запуска и перемещения мыши, а также с координатами вращения Vinyl_mc, но не могу получить ничего надежного. Есть ли способ определить направление и скорость и сохранить их в переменных?
Приложение можно просмотреть по адресу: http://s46264.gridserver.com/dev/dave/rotate/rotate.html, а исходный файл находится по адресу: http://s46264.gridserver.com/dev/dave/rotate/rotate.fla.zip, если это вообще поможет.
Спасибо.
import com.greensock.*;
import com.greensock.easing.*;
import com.greensock.plugins.*;
import flash.events.*;
TweenPlugin.activate([ShortRotationPlugin]);
var oldRotation,ax,ay,bx,by,thetaA,thetaB,delTheta,newTheta:Number;
var direction:String;
function dragger(evt:MouseEvent)
{
if (evt.type == MouseEvent.MOUSE_DOWN)
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragger);
stage.addEventListener(MouseEvent.MOUSE_UP, dragger);
oldRotation = vinyl_mc.rotation;
ax = stage.mouseX - vinyl_mc.x;
ay = stage.mouseY - vinyl_mc.y;
thetaA = Math.atan2(ay,ax) * 180 / Math.PI;
if (thetaA < 0)
{
thetaA = - thetaA;
}
else
{
thetaA = 360 - thetaA;
}
}
else if (evt.type == MouseEvent.MOUSE_MOVE)
{
bx = stage.mouseX - vinyl_mc.x;
by = stage.mouseY - vinyl_mc.y;
thetaB = Math.atan2(by,bx) * 180 / Math.PI;
if (thetaB < 0)
{
thetaB = - thetaB;
}
else
{
thetaB = 360 - thetaB;
}
delTheta = thetaB - thetaA;
newTheta = oldRotation - delTheta;
TweenLite.to(vinyl_mc, 1, {shortRotation:{rotation:newTheta}, overwrite:true, ease:Cubic.easeOut});
}
else if (evt.type == MouseEvent.MOUSE_UP)
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragger);
stage.removeEventListener(MouseEvent.MOUSE_UP, dragger);
}
}
vinyl_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragger);