Форум: "Начинающим";
Текущий архив: 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