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

as_68 18.07.2005 11:55

как избавиться от погрешности
 
Есть код
Код:

stop();
//кнопка "влево"
_root.bl.onRelease = function() {
        _root.plays = 1;
        _root.x2 = _root.box._x+205;
};
//кнопка "вправо"
_root.br.onRelease = function() {
        _root.plays = -1;
        _root.x2 = _root.box._x-205;
};
_root.onEnterFrame = function() {
        if (_root.plays == 1) {
                _root.box._x = _root.x2-(_root.x2-_root.box._x)/2;
        } else if (_root.plays == -1) {
                _root.box._x = _root.x2+(-_root.x2+_root.box._x)/2;
        }
        trace(_root.box._x);
};

Посоветуйте, плиз, как избавиться от погрешности перемещения
(т.е. надо чтобы BOX вставал в целые координаты кратные 205, без всяких сотых)
Пробовал Math.floor и Math.ceil, но box._x - может быть и отрицательная.

iNils 18.07.2005 12:04

Код:

around = function (arg) {
        if (arg > 0) {
                return Math.floor (arg);
        } else {
                return Math.ceil (arg);
        }
};
// пример
trace(around (-205.1842))
trace(around (-205.9842))
trace(around (205.1842))
trace(around (205.9842))


as_68 18.07.2005 13:07

А не хочет :(
Код:

stop();
around = function (arg) {
        if (arg > 0) {
                return Math.floor (arg);
        } else {
                return Math.ceil (arg);
        }
};
stop();
//кнопка "влево"
_root.bl.onRelease = function() {
        _root.plays = 1;
        _root.x2 = around(_root.box._x+205);
        trace(_root.x2);
};
//кнопка "вправо"
_root.br.onRelease = function() {
        _root.plays = -1;
        _root.x2 = around(_root.box._x-205);
        trace(_root.x2);
};
_root.onEnterFrame = function() {
        if (_root.plays == 1) {
                _root.box._x = _root.x2-(_root.x2-_root.box._x)/2;
        } else if (_root.plays == -1) {
                _root.box._x = _root.x2+(-_root.x2+_root.box._x)/2;
        }
};

результаты:
205
409
613
407
202

iNils 18.07.2005 13:19

дай исходник, я не могу понять что у тебя там делается.

as_68 18.07.2005 13:25

Вложений: 1
лови исходник

iNils 18.07.2005 15:54

а понятно. тебе нужно при нажатии не к текущим координатам прибавлять 205, а увеличивать или уменьшать счетчик нажатии. то есть, в самом начале он равен 0, при нажатии влево отнимается 1, а вправо наоборот прибавляется. после умножаешь счетчик на 205, это и будет твоя конечная координата для объекта.

as_68 18.07.2005 16:30

огромный сенкс :D


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

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