Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.05.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
Света   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.002 c
15-1385095642
atruhin
2013-11-22 08:47
2014.05.25
Алгоритмы. Обход списка с удалением произвольных элементов


15-1385107572
Сергей
2013-11-22 12:06
2014.05.25
Решение задачи


15-1384939416
Nil
2013-11-20 13:23
2014.05.25
Работа с SQLite


15-1384535475
БарЛог
2013-11-15 21:11
2014.05.25
Идея: распределённый торрент-диск


15-1385038996
bodygans
2013-11-21 17:03
2014.05.25
ПАТЕН





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский