Форум Flasher.ru

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

BlooDHounD 23.05.2010 13:52

iNils, я тебе ещё раз повторяю. на всех компах рассинхронизация вела себя по разному. реально заметно становилось после 5ти минут игры. у кого-то не становилось.

Psycho Tiger 23.05.2010 13:52

Давайте тогда оба теста в студию.

BlooDHounD 23.05.2010 13:59

какие оба теста?

etc 23.05.2010 14:04

Вложений: 1
Цитата:

Сообщение от iNils (Сообщение 910327)
BlooDHounD
1. Как вы поняли, что это getTimer?
2. Какая величина погрешности.
3. Эта погрешность накапливается?

1. Длительными тестами;
2. До 1 секунды, в зависимости от архитектуры и ОС;
3. Накапливается.

Вообще говоря, если не лень регистрироваться, то можно посмотреть в Destiny по шоткату Ctrl+Alt+F (в третьей строчке инфы в самом конце показана дельта между getTimer() и Date). На Mac OS дельта всегда ноль, на XP и Vista плавает регулярно туда-сюда.

iNils 23.05.2010 14:50

Цитата:

Сообщение от BlooDHounD (Сообщение 910341)
какие оба теста?

Давайте ваш.

i.o. 23.05.2010 23:25

Выложу тест первый:
Код AS3:

import flash.events.Event;
 
 
var _stTm_getTimer:uint = getTimer();
var _stTm_dateTime:Number = (new Date()).time;
 
var _minDelta:int = 0;
var _maxDelta:int = 0;
 
 
addEventListener( Event.ENTER_FRAME, OEF );
 
 
 
function OEF( e:Event ):void
{
        var _gt:uint = getTimer();
        var _dt:Number = (new Date()).time;
 
        var _dltGt:uint = (_gt - _stTm_getTimer);
        var _dltDt:Number = (_dt - _stTm_dateTime);
 
        var _delta:int = uint(_dltGt) - _dltDt;
 
        if( _minDelta > _delta )
                _minDelta = _delta;
 
        if( _maxDelta < _delta )
                _maxDelta = _delta;       
 
        txt_out.text =        "getTimer(): " + _gt + "\n" +
                                        "Date.time:  " + _dt + "\n" +
                                        "\n" +
                                        "delta getTimer(): " + _dltGt + "\n" +
                                        "delta Date.time:  " + _dltDt + "\n" +
                                        "\n" +
                                        "DELTA getTimer() - Date.time: " + _delta + "\n" +
                                        "\n" +
                                        "min DELTA: " + _minDelta + "\n" +
                                        "max DELTA: " + _maxDelta + "\n";
}

Согласно BloodHound, min DELTA или max DELTA со временем постоянно увеличивалась бы. У меня такого не происходит. Пробовал систему нагружать 3dmark'ом 2005 - ничего не изменилось (дельты остались на прежнем уровне).
WinXP x64.

BlooDHounD 24.05.2010 04:26

верить мне или нет - ваше право.

etc 24.05.2010 07:51

Тесты, в которых приложение только и занимается тем, что выводит дельту, что-либо увидеть невозможно. Если бы это было приложение, которое выгружает и загружает десятки мегабайт графики, что-то рендерит и т. п., то результат себя бы долго не заставил ждать. У нас уже через час работы рассинхронизация достигала пары секунд на некоторых машинах.


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

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