PDA

Просмотр полной версии : Динамическое вращение вокруг оси


quazare
02.05.2009, 10:52
Народ привет, подскажите где почитать про то, как сделать динамическое вращение вокруг оси мувика. (т.е. мувик крутишь вокруг определенной точки) имеется ввиду драгом.... Если можно примерчик...
Спасибо!

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


//-----работа с ШАТТЛОМ--------------------------------------

//внутренние координаты мыши в мувике шаттла
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