Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.06.2005, 14:59
gaploid вне форума Посмотреть профиль Отправить личное сообщение для gaploid Найти все сообщения от gaploid
  № 21  
Ответить с цитированием
gaploid

Регистрация: May 2003
Сообщений: 56
погоди. а у тебя stop() перед эти кодом не стоит? потому что может быть оно зациклилось? и обьявление функции идет каждый раз и поэтому когда увилеичил фпс то кол-во декларирований увеличилос или я чего то путаю

Старый 20.06.2005, 15:18
artfla$her вне форума Посмотреть профиль Отправить личное сообщение для artfla$her Найти все сообщения от artfla$her
  № 22  
Ответить с цитированием
artfla$her
 
Аватар для artfla$her

Регистрация: Apr 2004
Адрес: Петербург
Сообщений: 549
Отправить сообщение для artfla$her с помощью ICQ
код

var prevtime : Number = getTimer();
_root.onEnterFrame = function()
{
trace(getTimer() - prevtime);
prevtime = getTimer();
};

тоже не всегда выдает стабильный результат. Правда, тут погрешность не такая, но наводит на размышления (например, фпс = 15, трейс =
47, 68, 70, 66, 66, 66, 72, 67, 71, 66)
__________________
За двумя зайцами погонишься - от егеря по морде получишь

Старый 20.06.2005, 15:27
gaploid вне форума Посмотреть профиль Отправить личное сообщение для gaploid Найти все сообщения от gaploid
  № 23  
Ответить с цитированием
gaploid

Регистрация: May 2003
Сообщений: 56
код пришлось чуть чуть подправить для AS2
cx=0
u = function () {
_root.cx++;
if (_root.cx == 20) {
clearInterval (id);
for (i = 1; i < arrayID.length; i++) {
trace (arrayID[i] - arrayID[i - 1]);
}
}
arrayID[arrayID.length] = getTimer ();

};
arrayID = new Array ();
id = setInterval (u, 100);

результаты и правда чет рознятся
На 20 фпсах
105,100,101,106,104,104,101,104,101,104,101,104,101,104,100,101,104,101

на 5 фпс
101,120,120,119,101,120,120,119,101,120,120,119,100,100,101,120,119,101

На 11 фпс
180,180,180,180,180,180,180,180,180,181,188,180,180,180,180,180,180,180

Заметил что самые точные интервалы при фпс кратные 60. Помойму этот баг обсуждался в флешрипере, связанно с округлением.

Старый 20.06.2005, 15:40
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 24  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Статья называлась Волшебная частота.

Но там говорилась, что ошибка накапливается, а не каждый раз возникает. Все таки разница почти в 2 раза (180, а не 100) это много.

И кроме того, это показывает, что есть зависимость setInterval от fps.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 20.06.2005, 15:43
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 25  
Ответить с цитированием
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Цитата:
Сообщение от iNils
И кроме того, это показывает, что есть зависимость setInterval от fps.
Кому надо супер точность, может ввсести поправочный коэффициент, который определяем методом тыка......

Старый 20.06.2005, 15:57
gaploid вне форума Посмотреть профиль Отправить личное сообщение для gaploid Найти все сообщения от gaploid
  № 26  
Ответить с цитированием
gaploid

Регистрация: May 2003
Сообщений: 56
Цитата:
Сообщение от iNils
И кроме того, это показывает, что есть зависимость setInterval от fps.
и главное зависимость не пропорцианальна от кол-ва фпс. кривенькая функция получилась=(

кстате при интервалах около секунды погрешность не такая уж и большая примерно около 5-20 процентов.

А погрешность на фпс (к примеру 10, 5, ) и интервалом в секунду вообще отсутствует!!!

Атомные часы не получится сделаеть=)

Старый 20.06.2005, 16:03
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 27  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Ка отсутствует? У меня при fps 5, 10, 12 и интервалов 1000мс, выдавалось 1040-1060.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 20.06.2005, 16:09
  № 28  
Ответить с цитированием
Captain Crocus
Guest

Сообщений: n/a
Зависимость есть не прямая.

Колин Мук. ActionScript for Flash MX: The Definitive Guide, 2nd Edition

When an interval is set to run less often than the duration of a tick of the frame rate, it will execute on the frame after the interval time has expired. For example, given an interval set to 400 ms and a frame rate of 10 fps (1 frame per 100 ms), Table 18-16 shows the frames on which the interval should execute.

Frame number | Total time (milliseconds) | Interval executed?
000 | 0 | no
001 | 100 | no
002 | 200 | no
003 | 300 | no
004 | 400 | yes
005 | 500 | no
006 | 600 | no
007 | 700 | no
008 | 800 | yes
009 | 900 | no
010 | 1000 | no

However, whether an interval runs more or less often than the frame rate of a movie, interval times are by no means guaranteed. In an actual test movie, the intervals in Table 18-16 may execute at frames 5 and 9, or even at frames 4 and 9. Code execution, Player rendering, and available system resources can all affect the actual timing of intervals. Where time is an important factor in an application (for example, in a game), functions should be written to account for variance in interval times.

Русского издания под рукой не было

Старый 20.06.2005, 16:20
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 29  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Перевод (у меня был под рукой):

Если интервал задан так, что промежуток между его выполнениями больше, чем промежуток между тактами частоты смены кадров, то он будет выполняться в том кадре, который появится по истечении времени интервала. Так, если задан интервал длительностью 400 мс и частота смены кадров состовляет 10 с-1 (1 кадр каждые 100 мс), то таблице можно узнать, в каких кадрах будет выполняться интервал.
кадр|мс| выполнен интервал?
000 | 0 | no
001 | 100 | no
002 | 200 | no
003 | 300 | no
004 | 400 | yes
005 | 500 | no
006 | 600 | no
007 | 700 | no
008 | 800 | yes
009 | 900 | no
010 | 1000 | no
Но ка бы не выполнялся интервал по сравнению со сменой кадров фильма - чаще или реже, временные промежутки интервала не могут быть гарантированы...

Но это не отвечает на вопрос почему при fps 12-13 такие большие искажения.
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 20.06.2005 в 16:33.
Старый 20.06.2005, 16:34
gaploid вне форума Посмотреть профиль Отправить личное сообщение для gaploid Найти все сообщения от gaploid
  № 30  
Ответить с цитированием
gaploid

Регистрация: May 2003
Сообщений: 56
а не мог бы скинуть эту книгу на gaploid@yandex.ru
она большая?

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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