Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.05.25;
Скачать: CL | DM;

Вниз

Точный таймер   Найти похожие ветки 

 
Света   (2013-08-05 13:48) [0]

Здравствуйте. Помогите решить проблему работы таймера на разных компьютерах (в программе используется компонент стандартный ТTimer). На разных компьютерах программа ведет себя по разному.

Нужен точный таймер, какие могут быть варианты?


 
Sha ©   (2013-08-05 13:53) [1]

Никаких вариантов. Точных таймеров не бывает.


 
Света   (2013-08-05 13:55) [2]

Очень жаль...


 
Света   (2013-08-05 14:08) [3]

Как же так, что не бывает? Вот взять любую игру, там точная синхронизация событий по времени. Без этого в сетевых играх между двумя игроками была бы "каша".


 
[ВладОшин] ©   (2013-08-05 14:14) [4]


> взять любую игру, там точная синхронизация событий по времени

в пределах "неразличимой человеком" погрешности


 
Света   (2013-08-05 14:17) [5]

Будет более чем достаточно!!!

Это же не дело, что на Celeron 1.7 мГц и Athlon 2.5 мГц разница где-то в два раза


 
[ВладОшин] ©   (2013-08-05 14:20) [6]

код на ontimer какой?


 
Германн ©   (2013-08-05 14:21) [7]


> Это же не дело, что на Celeron 1.7 мГц и Athlon 2.5 мГц
> разница где-то в два раза

Тут таймер не при чём. Тут порылась какая-то другая собака. (с)


 
Света   (2013-08-05 14:24) [8]

Код в OnTimer одинаков - просто двигается фигура с лева на право.


 
[ВладОшин] ©   (2013-08-05 14:28) [9]

1. понимаю, что одинаковый.
2. Вопрос был не в том, одинаковый ли он или нет. Вопрос был -
>> код на ontimer какой?

3.
попробуйте конструкцию
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Timer1.Enabled := False;
 try
 // тут ваш код
 // (он может просто не успевать отработать до следующего раза на маломощном железе)
 finally
   Timer1.Enabled := True;
 end;
end;


 
Sha ©   (2013-08-05 14:29) [10]

значит, просто неправильно двигается


 
Sha ©   (2013-08-05 14:32) [11]

> [ВладОшин]

лекарство до обследования? )


 
Света   (2013-08-05 14:35) [12]

А как правильно? К примеру

procedure TMainForm.TimerTimer(Sender: TObject);
begin
 Shape.Left := Shape.Left + 1;
end;


и вылазит существенная погрешность


 
Sha ©   (2013-08-05 14:40) [13]

правильно смотреть текущее время и вычислять новое положение


 
[ВладОшин] ©   (2013-08-05 14:42) [14]

>> Света   (05.08.13 14:35) [12]
Timer.interval = ?

>> Sha ©   (05.08.13 14:32) [11]
я сейчас таким проектом занят, где приходится угадывать все :)
ибо четко не скажут все равно


 
Света   (2013-08-05 14:47) [15]

newPosition := curPosition + (curTime - predTime) * delta
{delta - пикселей в промежуток времени}

Вы это имели ввиду?

Ps.А где кнопка цитировать делась?


 
Anatoly Podgoretsky ©   (2013-08-05 14:48) [16]

Примени мультимедиа таймер, точность раз в  18 больше. Но по твоему коду точность не в таймере, а в клиентской обработке и отображения.


 
Света   (2013-08-05 14:48) [17]

>> ВладОшин] ©   (05.08.13 14:42) [14]

Timer.interval = 100


 
Света   (2013-08-05 14:54) [18]

>> Примени мультимедиа таймер, точность раз в  18 больше

Это что за компонент?


 
sniknik ©   (2013-08-05 15:01) [19]

> Это что за компонент?
да какая разница? все одно не поможет.

+
это не компонент.
++
в гугле забанили?


 
брат Птибурдукова   (2013-08-05 15:02) [20]


> на Celeron 1.7 мГц и Athlon 2.5 мГц разница где-то в два
> раза
Давай угадаю… Операционки на них стоят разные?


 
Sha ©   (2013-08-05 15:03) [21]

> Света   (05.08.13 14:47) [15]
> Вы это имели ввиду?

да


 
Sha ©   (2013-08-05 15:54) [22]

И еще если есть возможность, то лучше всегда вычислять смещение нового положения от начального, тогда погрешность не будет накапливаться.



Страницы: 1 вся ветка

Текущий архив: 2014.05.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.005 c
15-1384765946
KeyMouse
2013-11-18 13:12
2014.05.25
KVM бывают разные?


15-1384896605
Юрий
2013-11-20 01:30
2014.05.25
С днем рождения ! 20 ноября 2013 среда


2-1375632164
NewOne
2013-08-04 20:02
2014.05.25
Проверка на существование


2-1375709817
Рашид
2013-08-05 17:36
2014.05.25
SQL - Вопрос


3-1298639170
Очень злой
2011-02-25 16:06
2014.05.25
Проблема с запросом.