Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   зависание при расчете угла (http://www.flasher.ru/forum/showthread.php?t=183239)

Wolf 16.08.2012 02:21

зависание при расчете угла
 
Код AS3:

var dx:Number = World.mouseXWorldPhys - position.x;
                                var dy:Number = World.mouseYWorldPhys - position.y;
                                var rot:Number = Math.atan2(dx, dy * -1);
                                trace(rot);

вот такой вот код прекрасно работает и в тре1с выдает нужный угол, а такой
Код AS3:

var dx:Number = World.mouseXWorldPhys - position.x;
                                var dy:Number = World.mouseYWorldPhys - position.y;
                                var rot:Number = Math.atan2(dx, dy * -1);
angle = rot;
                                trace(rot);

не работает и приводит к зависанию плеера и в втрейс выдает NaN. как это объяснить?
Код AS3:

public function set angle(angle:Number):void {
                        if (_body) {
                                _body.SetAngle(angle);
 
                        } else {
                                _body_def.angle = angle;
                        }
                }

а если angle = rot; заменить на angle = 2; все работает

P.S. код в Event.ENTER_FRAME

-De- 16.08.2012 02:39

Потрейсьте ещё и что передается в Math.atan2. Может, установка угла каким-то образом делает NaN World.mouseXWorldPhys или position.x или у координаты и потом оно от этого с ума сходит. Кстати, в atan2 сперва передается у координаты, хотя это относительно =)

Wolf 16.08.2012 03:05

так дело в том что если убрать angle = rot, то trace(rot) выдаст нормальный результат

-De- 16.08.2012 03:11

Под "установка угла" я как раз имел в виду "angle = rot".

Wolf 16.08.2012 03:13

да. а если например взять angle=1.6, то все прекрасно работает

Добавлено через 5 минут
в других проекахт такой подход работает, тут не хочет

-De- 16.08.2012 03:19

Ну и что? Оно же не 2 и не 1.6 устанавливается в нерабочем случае. Но мне спорить не хочется, ок, это эзотерика, наверное просто не судьба, закругляюсь.

Wolf 16.08.2012 03:25

0.6365082157879511 один из результатов, выведенный в трейс.
angle = 0.6365082157879511; прекрасно работает.
а вот angle = rots; все равно не работает

Добавлено через 2 минуты
а просто не понимаю как такое возможно

-De- 16.08.2012 03:31

Я написал как, у вас dx и/или dу NaN становится почему-то.

Wolf 16.08.2012 03:56

пффф. бред. вся проблема біла иза того что у меня METERS было int. и Numbers делил на int


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

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