Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Как сделать задержку выполнения программы на N милисекунд?   Найти похожие ветки 

 
HES ©   (2004-01-27 11:18) [0]

Есть функция sleep(N), но она работает криво, загружает процессор на 100%. А задача такова: я делаю игру видео-покер. Карты должны выводиться поочередно через 0.2 сек. Я пишу:

for i:=0 to 4 do
begin
Card[i].show;
sleep(200)
end;

И что я получаю? - Сначал "зависон" ровно на 5*200ms=1сек, а потом все карты появляются одновременно...
Может создать Timer с интервалом в 200ms, задать ему буфер адресов функций которые надо выполнить, и выпонять их по Timer1Timer? Но это слишком некрасиво. Может кто знает как сделать функцию например

function Pause(N_ms: integer):boolean

которая возвращает True по прошествии N ms, и во время своего выполнения не загружает процессор?


 
Darthman ©   (2004-01-27 11:31) [1]

А card - это, поди, компонент? Тогда card.repaint до ухода в спячку делай.


 
panov ©   (2004-01-27 12:03) [2]

for i:=0 to 4 do
begin
Card[i].show;
Application.ProcessMessages;
sleep(200)
end;


 
Oyster ©   (2004-01-27 12:41) [3]

Или так

for i:=0 to 4 do
begin
Card[i].show;
Form.RePaint;
sleep(200)
end;


 
Oyster ©   (2004-01-27 12:49) [4]

И, кстати, Sleep не загружает процессор на 100%, а ноаборот, освобождает его от приложения на время работы процедуры.


 
Digitman ©   (2004-01-27 14:19) [5]

var
CardId: Integer;

procedure TMyForm.MyTimerTimer(Sender: TObject);
begin
Card[CardId].Show;
inc(CardId);
with TTimer(Sender) do
begin
Enabled := CardId < 4;
if not Enabled then
begin
CardId := 0;
MyButton.Enabled := True;
end;
end;
end;

....

procedure TMyForm.MyButtonClick(Sender: TObject);
begin
...
MyTimer.Interval := 200;
MyTimer.Enabled := True;
MyButton.Enabled := False;
...
end;


 
Goorus   (2004-01-28 03:28) [6]

Я так делал ограничение fps:

var StartTime:Cardinal;
...
for i:=0 to 4 do
begin
Card[i].show;
StartTime:=GetTickCount;
while (GetTickCount-StartTime)<200 do
Application.ProcessMessages;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
14-16717
просто Я
2004-01-16 15:42
2004.02.06
---|Ветка была без названия|---


3-16142
dummy
2004-01-15 12:13
2004.02.06
названия полей в таблице


14-16689
goga
2004-01-16 23:55
2004.02.06
поиск работы


1-16357
denis24
2004-01-24 10:21
2004.02.06
выпадающий список у combobox


14-16600
ёё
2004-01-15 14:10
2004.02.06
Что есть пиринговые сети?