Форум 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=100780)

Mnilionic 04.09.2007 18:31

вращение клипа в зависимости от курсора
 
на сцене есть кнопка btn со стрелкой (аля компас)
эта стрелка следит за движением мышки
Код:

function circ(mc) {
        // получаем длины катетов треугольника
        var x = _xmouse-mc._x;
        var y = _ymouse-mc._y;
        // считаем гипотенузу
        var r = Math.sqrt((x*x)+(y*y));
        // через арксинус получаем нужный угол
        var rotation = Math.round((Math.asin(x/r))*180/Math.PI);
        // это вышло методом подбора что работало
        if (y>0) rotation = 180-rotation
        mc._rotation = rotation;
        trace(rotation);
}

в итоге все замечательно крутится. Единственная проблема - угол принимает значения от -90 до 270 градусов. А мне нужно от 0 до 360
Как наладить?
Спасибо.

Molecula 04.09.2007 18:41

Странно - но твой код крутит мой клип от 0 до 360 градусов.
Так что всё нормально.

Вот как я сделал:
Код:

function Rotate_Shit(){
        // получаем длины катетов треугольника
        var x = _xmouse-mc._x;
        var y = _ymouse-mc._y;
        // считаем гипотенузу
        var r = Math.sqrt((x*x)+(y*y));
        // через арксинус получаем нужный угол
        var rotation = Math.round((Math.asin(x/r))*180/Math.PI);
        // это вышло методом подбора что работало
        if (y>0) rotation = 180-rotation
        mc._rotation = rotation;
        trace(rotation);
}
onEnterFrame=Rotate_Shit;

сорри за названия

Mnilionic 04.09.2007 18:53

а у меня трасируются от -90 до 270
запускаю так:
Код:

btn.onPress = function() {
        onMouseMove = function () {
                circ(btn);
        };
};
btn.onRelease = btn.onReleaseOutside=function () {
        delete (onMouseMove);
};


CorC 05.09.2007 10:12

А что мешает добавить Пи/2 к углу в ротации?

chingachgoog 05.09.2007 10:17

Код:

onMouseMove=function(){
        мой_мувик_стрелка._rotation=Math.atan2(_ymouse,_xmouse)*180/Math.PI
}

Этот код должен быть помещен в родителя мой_мувик_стрелка, если сделать родителем _root, то система отсчета координат будет левый верхний угол и соответственно вращаться стрелка будет только на 15 минут

Mnilionic 05.09.2007 14:08

chingachgoog, спасибо за формулу,
но, в вашем варианте у меня стрелка отстаёт от мышки на 90 град.
то есть если мышка справа от клипа, то стрелка смотрит вверх.

CorC, то что угол поворота будет не соответствовать положению мышки, как и в примере chingachgoog

chingachgoog 05.09.2007 14:17

Цитата:

Сообщение от Mnilionic
chingachgoog, спасибо за формулу,
но, в вашем варианте у меня стрелка отстаёт от мышки на 90 град.
то есть если мышка справа от клипа, то стрелка смотрит вверх.

Это зависит от того как стрелка нарисована. (т.е. положения исходного клипа). Всего делов - перерисовать мувик-стрелку (положить его горизонтально), либо добавить в формулу смещение на 90 градусов.

Mnilionic 05.09.2007 14:32

тоесть при этой формуле нулевой градус не вверху, а как в школе - справа?
хорошо, щас запробую.
Спасибо

Mnilionic 05.09.2007 15:01

отлично! работает как положенно. Большое спасибо.


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

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