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

Вниз

Как нориальный таймер   Найти похожие ветки 

 
MSergey   (2002-05-16 19:53) [0]

В игре нужно синхронезировать движения со временем, обычный таймер не подходит. Обновление в 65 раз в секунду слишком долгое


 
MBo   (2002-05-16 20:02) [1]

uses
...mmsystem;

var
Form1: TForm1;
i:integer;
uTimerID:dword;
d:dword;

procedure ActionCallBack(TimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);stdcall;
begin
inc(i,dwUser);// демонстрация использования параметра
form1.label1.caption:=inttostr(i);
application.processmessages;//для обновления label
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
d:=gettickcount;//отсчет времени в миллисекундах
uTimerID:=timeSetEvent(1,1,@ActionCallBack,2,TIME_PERIODIC);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timeKillEvent(uTimerID);
label2.caption:="Elapsed "+inttostr(gettickcount-d)+" ms";
end;


 
}{enon   (2002-05-16 20:05) [2]

Попробуй использовате системные часы.


 
igor_2k   (2002-05-16 22:50) [3]

у меня проходила такая фишка с задержкой - вычисляешь отношение цикла к примеру
for i:=1 to 5000 do
inc(a);
к системному таймеру - я думаю тут ничего непонятного нету и потом задержку выставляешь не в секундах а в операциях - ведь они также онимаю время - если нехватает лонгинта для i вкладывай циклы хоть добесконечности вот и все


 
cult   (2002-05-18 13:22) [4]

2 МВо:

я тут передрал Ваш пример (у нас уже был про него разговор), и вот какой глюк лезет.

Передрал я его слово в слово. Так вот, когда таймер тикает, в левом верхнем углу экрана пытается отображаться копия Label1! Объяснений у меня для этого нет. Понятно, что когда я уберу эту демо-строчку с Label, это пропадет. Но глюк-то берется откуда-то...

Есть ли какие нибудь мысли?
Спасибо.


 
MBo   (2002-05-18 21:23) [5]

глюка у меня нет и мыслей тоже


 
MSergey   (2002-05-20 15:37) [6]

Cult: у меня тоже самое!
MBo: Можно ли в место адреса callback процедуры написать nil, т.е
не вызывать её вообще?
Когда я так делаю сразу после запуска появляется ошибка и комп виснет. У меня Д6.



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

Форум: "Основная";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
14-97385
SPeller
2002-04-18 08:44
2002.05.30
Проблема с Виндой


4-97461
ZOND
2002-03-27 00:57
2002.05.30
Hook без DLL-Это возможно


3-97153
XanderMan
2002-05-06 15:02
2002.05.30
Поиск в BLOB поле


14-97425
sudiv
2002-04-23 14:10
2002.05.30
Чего с БК случилось ???


1-97272
Durak
2002-05-16 18:27
2002.05.30
StringGrid and DrawGrids





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский