Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Точный таймер [D7]


Страницы:   1 2

Света ©   (2013-08-05 13:48:00) 

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

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


Sha   (2013-08-05 15:54:00) [1]

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


Sha   (2013-08-05 15:03:00) [2]

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

да


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


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


sniknik   (2013-08-05 15:01:00) [4]

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

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


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

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

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


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

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

Timer.interval = 100


Anatoly Podgoretsky   (2013-08-05 14:48:00) [7]

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


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

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

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

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


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

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

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


Sha   (2013-08-05 14:40:00) [10]

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


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

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

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


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


Sha   (2013-08-05 14:32:00) [12]

> [ВладОшин]

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


Sha   (2013-08-05 14:29:00) [13]

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


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

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

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


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

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


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


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

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


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

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


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

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

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


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


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

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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо