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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.05.2010, 02:50
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 21  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Psycho Tiger, не переживай ты так, сейчас найду эту тему..))

Старый 23.05.2010, 02:53
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 22  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
результат getTimer зависит от архитектуры процессора. проверенный факт. когда я работал в TZ, у нас при разработки Desteny возникла проблема, которую мы не могли решить. на getTimer подумали в последнею очередь. оказалось, что на всех машинах он давал разную погрешность. где-то отставал, где-то спешил. точно работал только на Денискином ноуте. в итоге мы написали свой getTimer() с блэкджеком и сопутствующими ингредиентами.

Добавлено через 1 минуту
но погрешности getTimer и класса Timer между собой никак не связанны.

Старый 23.05.2010, 02:58
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 23  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Может я и ошибаюсь, что getTimer() точнее Date.time. Но в общем там постоянно есть погрешность между ними.
Пост номер 3 из этой темы http://www.flasher.ru/forum/showthread.php?t=133807
Просто автор в самом начале жалуется на постоянную разницу в измерениях, используя Date.time.


Ну или вот такой вариант:
Код AS3:
 
stage.addEventListener( MouseEvent.CLICK, _onMClick );
 
 
 
function _onMClick( e:MouseEvent ):void
{
	for( var i:int=0; i<2048; i++ )
	{
		trace( getTimer() );
		trace( (new Date()).time );
		trace();
	}
 
}
А вот результат (там где многоточие - убраны повторяющиеся значения):
Цитата:
668
1274565831593

669
1274565831593

....

669
1274565831609

670
1274565831609

....

671
1274565831609

....

672
1274565831609

....

673
1274565831609

....
....

686
1274565831625
Как видно, Date.time показывает полную чушь (в смысле с большой погрешностью), в то время, как getTimer() примерно через одинаковое количество трэйсов увеличивается на единичку


Последний раз редактировалось i.o.; 23.05.2010 в 03:28.
Старый 23.05.2010, 03:09
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 24  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Date точнее, так как он зависит от системных часов. а getTimer зависит от процессора.

Старый 23.05.2010, 03:14
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 25  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
BlooDHounD, прокомментируйте пост выше (обновлен).
Если вы правы, то приведите подтверждающий пример.


Последний раз редактировалось i.o.; 23.05.2010 в 04:03.
Старый 23.05.2010, 04:19
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 26  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
лично меня не волнует, то что Date обновляет своё значение не мгновенно. главное, что через 5 минут работы приложения, он отстаёт всего на 5 мс, а не 40 сек. а запрашивать время дважды в одной функции я ни разу даже не додумался =)

для тестов скорости точности getTimer хватает. а для релтайм игры его погрешность на длинных дистанциях меня не устраивает.


Последний раз редактировалось BlooDHounD; 23.05.2010 в 04:21.
Старый 23.05.2010, 07:04
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 27  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Да, на длинных дистанциях Date лучше, без вопросов.
Правда есть один маловероятный ньюанс: пользователь может перевести время или например переход на летнее и обратно...))

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
BlooDHounD
1. Как вы поняли, что это getTimer?
2. Какая величина погрешности.
3. Эта погрешность накапливается?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.05.2010, 13:28
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 29  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
1. случайно. что-то врало и мы не могли понять что. предположили самое невероятное и написали тест, который показывал разницу Date и getTimer. их дельта не уклонима росла со временем.
2. на всех компах была разная
3. да

с тех пор вместо flash.utils.getTimer для синхронизации используется такой такой неказистый код:
Код AS3:
package blooddy.utils {
 
	/**
	 * @author					BlooDHounD
	 * @version					1.0
	 * @playerversion			Flash 10
	 * @langversion				3.0
	 */
	public function getTimer():Number {
		return ( new Date() ).getTime() - startTime;
	}
 
}
 
import flash.utils.getTimer;
 
/**
 * @private
 */
internal const startTime:Number = ( new Date() ).getTime() - flash.utils.getTimer()

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Написал свой тест. Результат совсем другой. Погрешность есть, колебалась в диапазоне -7..7 мс без нагрузки и с нагрузкой в 1000000 итераций простого цикла. С 10000000 колебания были -14..0 мс. Накопления не обнаружил.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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