Форум 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)
-   -   _rotation после 180 градусов (http://www.flasher.ru/forum/showthread.php?t=94893)

Charly84 22.04.2007 17:19

_rotation после 180 градусов
 
Здравствуйте, форумцы ;)
К вам вопрос....

Есть стрелка.. .которую мне надо крутить :)
прикрепляю код, как я ее кручу..

Но есть небольшая проблема. Если up_gr < 180, тогда код работает и все в ажуре.. стрелка крутиться против-за часовой стрелкой по очереди

Но если up_gr >= 180, тогда стрелка просто крутиться в одну сторону и все. Когда делаю трейс up_gr - получается, что после 180 _rotation принимает минусовое значение. -178, -176, -174 и т.д.

Помогите сделать так, чтобы градус поворота стрелки можно было представлять от 0 до 360, а не от 0 до 180.

Заранее благодарен.

Код:

onClipEvent (load) {
step = 2;
_rotation = 60;
up_gr = random(100) + 75;
down_gr = random(28) + 50;
prov = 0;
        }
       
onClipEvent (enterFrame) {
        _root.speed_t = Math.floor(_root.speed._rotation/2);
        _rotation = _rotation + step;
        if (_rotation >= up_gr) {
                step = - step;
                prov = 1;
        };
        if (_rotation <= down_gr & prov == 1) {
                step = - step;
                prov = 0;
up_gr = random(100) + 75;
down_gr = random(28) + 50;
        };
}


goder 22.04.2007 17:44

Держи

Код:

function movestrelka(){
xd = strelka._x + strelka._height / 2 ;
                yd = strelka._y + strelka._width / 2 ;
               
                m_x = _root._xmouse;
                m_y = _root._ymouse;
               
                ygol = Math.round(get_angle(xd, yd, m_x, m_y));

}


function get_angle(xc, yc, xm, ym)
        {
var xa=xc+10;
                var AD, AC, DC, ugol;
                AD = Math.sqrt((xc - xm) * (xc - xm) + (yc - ym) * (yc - ym));
                AC = Math.sqrt((xc - xa) * (xc - xa));
                DC = Math.sqrt((xa - xm) * (xa - xm) + (yc - ym) * (yc - ym));
                ugol = Math.acos(((AD * AD) + (AC * AC) - (DC * DC)) / (2 * AD * AC)) * (180 / Math.PI);
                if (ym > yc)
                {
                        ugol = 360 - ugol;
                }
                return ugol;
        }

Если я тебя правильно понял

etc 22.04.2007 18:16

Оперировать с другой переменной нужно, а её значение присваивать _rotation.

Kikasso 22.04.2007 18:24

придумай еще свойство для клипа, например angle, и пусть оно меняется как тебе захочется. А после изменения этого свойства присваивай _rotation новое значение. Можно задейсвовать watch для автоматизации процесса.
upd: что-то я пишу медленно

Charly84 22.04.2007 21:46

Спасибо ;) помогло ;)


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

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