![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Timer в Builder. [Delphi, C++ Builder, Windows]
VolanD666 © (2004-11-13 13:01:00)Здрасти, мастера! В DelphiX есть хороший Timer, который основан на событии формы OnIdle. Хотел такой же написать для Builder'а вот только кося где то:
Word MiliSeconds;
DecodeTime(Time()-OTime, NULL, NULL, NULL, MiliSeconds);
if (Start and MiliSeconds>=1/30){
OTime=Time();
/* Текст отрисовки */
Done=false;
}
OTime- глобальная.
VolanD666 (2004-11-25 17:46:00) [1]Thank you.
bobomen_ (2004-11-22 14:19:00) [2]Удалено модератором
Примечание: Последнее предупреждение.
bobomen_ (2004-11-22 08:16:00) [3]Удалено модератором
Megabyte-ceercop (2004-11-22 07:56:00) [4]И от меня тоже сорри.
забыл, что при операциях с Ларге_интегером нужно писать так:
currentticks.QuadPart - Ocurrentticks.QuadPart //QuadPart выделяет младшую часть и приводит к интегеру.
Помести это.
VolanD666 (2004-11-21 15:34:00) [5]:)
VolanD666 (2004-11-19 15:29:00) [6]Сорри, но Builder ругается на:
> if ((currentticks - Ocurrentticks) > 20) // 50 Hz (1000/20)
(Говорит, что оператор "-" не определен для типа LARGE_INTEGER)
VolanD666 (2004-11-19 11:37:00) [7]Спасибо, попробую.
Megabyte-CeerCop (2004-11-15 07:23:00) [8]
> (¤tticks
Это похоже распознано как тэг читать так:
&_currentticks ( только без знака подчёркивания.)
Megabyte-CeerCop (2004-11-15 07:21:00) [9]Делай так. Это быстрый и единственно правильный для игры способ.
LARGE_INTEGER currentticks;
LARGE_INTEGER Ocurrentticks;
QueryPerformanceCounter (¤tticks); // получаем текущее время
if ((currentticks - Ocurrentticks) > 20) // 50 Hz (1000/20)
{
Ocurrentticks = currentticks;
/* Текст отрисовки */
}
//Пригодится
QueryPerformanceFrequency(&tickspersecond); // получаем частоту таймера для данной машины.