Форум 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)
-   -   onEnterFrame а что не так (http://www.flasher.ru/forum/showthread.php?t=65663)

Король 17.06.2005 19:48

согласен полностью

netstuff 17.06.2005 19:51

2 Штрек
Цитата:

Шутка?!.......
не думаю. а что смущает? :confused:

Ostgur 17.06.2005 20:32

2 D12:
Сжатая_ZIP_Папка рулит, привет, за что у тебя плюсики то опять?

А вообще я люблю onEnterFrame, потому что я тупой и альтернативных путей не знаю!!!

50%LameRa 17.06.2005 21:01

Так все таки если для задачи все равно, что юзать onenterframe или setinterval?

Ostgur 17.06.2005 21:09

Цитата:

Сообщение от 50%LameRa
Так все таки если для задачи все равно, что юзать onenterframe или setinterval?

Если ты помимо onenterframe или setinterval не будешь юзать другой сложной анимации или кода, то всё равно! ;)

netstuff 17.06.2005 21:12

что пишет хелп:
Цитата:

If interval is less than the SWF file’s frame rate (for example, 10 frames per second [fps] is equal to 100 milliseconds), the interval function is called as close to interval as possible.
----------- (постарайусь перевести с листа ;) )----------------
Если интервал меньше чем ФПС клипа (например, 10ФПС = 100 милисекундам), то функция интервала принимает наиболее близкое значение.
ИМХО, это значит, что onEnterFrame - функция более низкого уровня.
а вот по поводу загрузки проца (а это, согласитесь, основная проблема) - думаецца мне, что интервал потяжелее будет. хотя надо проверять :rolleyes:

а по-хорошему, я не очень понимаю, как эти 2 функции перескаюцца. ведь там, где нам нужно именно событие на каждый фрейм (например, покадровое проигрывание анимации) - логично использовать onEnterFrame. а там, где нам нужен временной интервал > один кадр - логично использовать setInterval (нежели на onEnterFrame расставлять проверки, счетчики и условия всякие) :cool:

artfla$her 18.06.2005 17:07

Интервал(ы) удобно использовать тогда, когда необходим точный просчет изменений положения объекта. Например, в играх. Представим такую ситуацию - вылетает пуля, и она, врезавшись в тот или иной предмет, должна исчезнуть. Пуля, понятное дело, летит быстро. Как проверять совпадение и двигать пулю? Вариант 1. Юзать onEnterFrame. В этом случае у нас может возникнуть ситуация, когда смещение пули будет превышать хотя бы 10 пикселов - возможна такая фигня - пулька пролетит "насквозь" объекта, чья толщина менее 10 пикселов. Вариант 2. Юзать интервал (очень быстрый интервал, этак 1-10 миллисекунд) и большой fps. Тогда можно просчитывать совпадения каждые 1-10 миллисекунд и двигать пулю не более чем на пиксел-другой. Но в этом случае более чем два-три таких интервала установить будет нелегко, т.к. проц загружается жестко (при оптимизации других вещей, того же выявления совпадений с помощью раздления экрана на локации).

Король 18.06.2005 17:54

а можно просто в момент пуска пули просчитать, врежется она во что-то или нет. и когда. но такой вариант мало где подойдет, поскольку всю игру нужно будет строить совсем по другим принципам.

50%LameRa 18.06.2005 22:00

Ну если интервалы от fps не зависят, тогда все понятно.
Всем спасибо.

iNils 19.06.2005 00:27

Цитата:

Сообщение от 50%LameRa
Ну если интервалы от fps не зависят, тогда все понятно.
Всем спасибо.

Ну не совсе так ;)
Только что провел тест на FLASH MX, 2004 под рукой не было, поэтому не могу сказать как он справится моим тестом (кому не лень, повторите на 2004 и скажите результат).

Итак, берем следующих код:
Код:

u = function () {
        cx++;
        if (cx == 20) {
                clearInterval (id);
                for (i = 1; i < arrayID.length; i++) {
                        trace (arrayID[i] - arrayID[i - 1]);
                }
        }
        arrayID[arrayID.length] = getTimer ();
};
cx = 0;
arrayID = new Array ();
id = setInterval (u, 100);

Ставим fps = 5
Результат:138,102,100,102,118,100,100,100,100,100,100,100,100,100,100,100,100,100
в начале завал, но потом все верно

fps=6
108,109,113,112,111,113,112,111,113,112,113,111,111,113,112,111,113,112
погрешность в 11-12%, не очень хорошо

fps=7
109,107,111,112,112,112,112,112,112,112,112,112,111,113,112,111,113,112
тоже самое

а теперь поставте fps 11 или 12
164,172,175,177,176,176,176,176,176,176,176,176,178,174,176,176,176,176
?????


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

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