Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Динамическое вращение вокруг оси (http://www.flasher.ru/forum/showthread.php?t=124524)

quazare 02.05.2009 10:52

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

mooncar 02.05.2009 12:34

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

Код 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



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

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