Вот делал управление ручкой-шаттлом, может быть поможет вам, хотя реализвано и не "драгом".
Используется математическая функция арктангенса, потом переводим ее значения из радианов в градусы.
Перед этим по условиям разбираем возможные значения внутренних координат мыши, чтобы всё корректно работало.
Несколько кривовато, как я теперь думаю, но работает.
Сам пример прилагается.

Код AS1/AS2:
//-----работа с ШАТТЛОМ--------------------------------------
//внутренние координаты мыши в мувике шаттла
var rulxm:Number;
var rulxm:Number;
//угол поворота руля шаттла
var a:Number;
//организация вращения руля шаттла
shMC.rulMC.butMC.onPress = function() {
var mouseListenerRul:Object = new Object();
mouseListenerRul.onMouseMove = function() {
rulxm = shMC._xmouse;
rulym = shMC._ymouse;
if (rulym > 0 && rulxm > 0) {
a = 90 + (Math.atan(rulym/rulxm))*57.3; //приведение к градусам
shMC.rulMC._rotation = a;
}
else if (rulym > 0 && rulxm < 0) {
a = 270 + (Math.atan(rulym/rulxm))*57.3;
shMC.rulMC._rotation = a;
}
else if (rulym < 0 && rulxm < 0) {
a = 270 + (Math.atan(rulym/rulxm))*57.3;
shMC.rulMC._rotation = a;
}
else if (rulym < 0 && rulxm > 0) {
a = 90 + (Math.atan(rulym/rulxm))*57.3;
shMC.rulMC._rotation = a;
}
else if (rulym < 0 && rulxm == 0) {
shMC.rulMC._rotation = 0;
}
else if (rulym > 0 && rulxm == 0) {
shMC.rulMC._rotation = 180;
}
else if (rulym == 0 && rulxm < 0) {
shMC.rulMC._rotation = 270;
}
else if (rulym == 0 && rulxm > 0) {
shMC.rulMC._rotation = 90;
}
};// end onMouseMove
Mouse.addListener(mouseListenerRul);
mouseListenerRul.onMouseUp = function() {
Mouse.removeListener(mouseListenerRul);
}; //end onMouseUp
}; //end onPress