M I D l e t P a s c a l
GetRelativeTimeMs

Возвращает текущее время в миллисекундах (1 секунда = 1000 миллисекунд). Помните, что возвращаемое значение не может быть больше 4294967296 (что соответствует приблизительно 48 суткам). По-этому каждые 48 суток отсчет будет начинаться с 0. По этой причине данная функция не годится для определения времени, прошедшему между двумя датами, но широко используется для различных таймеров в играх или приложениях.

К примеру, ситуация из жизни: Вы пишите простую игру типа Тетриса и вам нужно чтобы фигура двигалась вниз со скоростью 1 клетка в секунду. При этом ещё нужно отлавливать нажатия клавиш влево/вправо/огонь, а это значит, что функция Delay вам не подойдет. В этом случае главный цикл опроса клавиатуры можно оформить как приведенный ниже:

function GetRelativeTimeMs: integer;
 



Пример

...
  lastSavedTime := GetRelativeTimeMs; // Инициализация таймера
  repeat
    // Считываем текущую нажатую клавишу
    key := GetKeyClicked;
    if KeyToAction(key) = GA_LEFT then moveLeft;
    if KeyToAction(key) = GA_RIGHT then moveRight;

    // Проверяем прошла ли 1 секунда
    if ((GetRelativeTimeMs - lastSavedTime) > 1000)
      or (GetRelativeTimeMs < lastSavedTime)
      then
      begin
        lastSavedTime := GetRelativeTimeMs;
        moveDown; // Двигаем блок вниз
      end;
  until gameOver;
...





Совместимость

MIDP1.0




Требуемый модуль

Не требуется




Смотри также