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

Вниз

Помогите реализовать...   Найти похожие ветки 

 
Pete ©   (2002-02-18 15:34) [0]

Может, кто поможет. Вообщем есть анимация. Стоит пока на таймере, но если компьютер не мощный, то скорость одна, а на быстром другая. Например: на одном успевает отрисовать кадр за 10мс, а на другом за 20. А это все портит.
Вообщем как установить кол-во кадров не зависимо от производительности. Может можно использовать какие-нибудь АПИ??? Пусть хоть OpenGL, хоть DХ...


 
DieHard ©   (2002-02-18 15:43) [1]

Если анимация - набор картинок, то можно загрузить их все в TImageList и показывать по таймеру уже из него.


 
Pete ©   (2002-02-18 16:05) [2]

Именно картинка строится в буфере видеопамяти и выводится на экран. Под ДиректДро...


 
Лёша ©   (2002-02-18 23:50) [3]

Не понятно, что тебе нужно? "Установить кол-во кадров не зависимо от производительности" для слабых машин не возможно. Они просто могут не потянуть. Устанавливать же заведомо медленную скорость кадров тоже не целесообразно. Как я понял тебе нужен алгоритм "потери" кадров для слабых компьютеров. Скажи, если не так.
Во всяком случае, попробуй следущее:

procedure TForm1.Timer1Timer(Sender: TObject);
begin

засекаем время
выключаем таймер ( Timer1.Enabled:= 1=2)
рисуем, воспроизводим кадр
смотрим, сколько прошло времени
если быстро Timer1.Interval:= Timer1.Interval - 10;
иначе Timer1.Interval:= Timer1.Interval + 10;
включаем таймер ( Timer1.Enabled:= 1=1)
end;


 
Владимир Васильев   (2002-02-19 09:58) [4]

Во-первых,- таймер. Только не виндовый.
Под вашу задачу подойдёт DXTimer из DelphiX.

procedure TMainForm.DXTimerTimer(Sender: TObject; LagCount: Integer);

LagCount - показывает интервал между последовательными вызовами.
Соответственно скорость анимации изменяем пропорционально LagCount.


 
Pete ©   (2002-02-19 12:38) [5]

А что за DelphiX, где его взять???


 
Pete ©   (2002-02-19 12:48) [6]

Если у кого есть для Delphi5, то может кинете ДельфиХ на moremebeli@usp.ru... please... внешний трафик почти кончился.


 
troits ©   (2002-02-19 12:58) [7]

В уже упомянутой на этом форуме книге Краснова делается так: на OnIdle вешается вывод графики, а как таймер для обновления поверхностей используется GetTickCount.


 
handra ©   (2002-02-20 10:51) [8]

можно реализовать следующий таймер:

создать поток и передать в него адрес процедуры обновления,
в потоке вызывать эту процедуру и засыпать Sleep на определенное время, или сверять GetTickCount перед вызовом процедуры (так мы отвяжемся от времени обновления) - все это в бесконечном цикле



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
14-88992
Malder
2002-05-18 22:03
2002.06.27
Почему нельзя создать файл AUX ?


6-88984
Lexxt
2002-04-18 13:38
2002.06.27
Подскажите как сделать


3-88779
Lord_BTR
2002-06-05 11:16
2002.06.27
Идентификация пользователей в Oracle9i


1-88854
Дельфятник
2002-06-17 17:25
2002.06.27
Можно ли уменьшить размер заголовка TTabSheet, и если да, то как?


1-88847
Cossys
2002-06-17 15:32
2002.06.27
DOC по Rational Rose