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

Вниз

Как организовать одновременную работу процессов, без тормозов   Найти похожие ветки 

 
Black Fury   (2004-01-09 00:30) [0]

Делаю простенькую игрушку,возникла проблема. Мне необходимо чтобы на
DxDraw.Surface происходило смешение двух изображений с разной скоростью.
пытался реализоать это через два таймера(DxTimer), где по одному таймеру
происходит отрисовка всего изображение и смещения одного параметра отвечающего за первое изображение, а по второму изменяется параметр
отвечающий за положение второго изображение, но при таком решение этой
задачи второй таймер срабатывает с запазданием и из за этого все дергается, как быть?


 
ZAROLF ©   (2004-01-09 08:37) [1]

Ну с таким подходом таймеры можно бесконечно лепить.

Вот пример, надеюсь разберёшся:

var
s,t:boolean; //независимое перемещение

//первое изображение
if x<=0  then s:= true;
if x>=640 then s:= false;
if s= true then X := X+1;  //
if s= false then X := X-1; //скорость перемещения

//второе изображение
if x<=0  then t:= true;
if x>=640 then t:= false;
if t= true then X := X+3;  //
if t= false then X := X-3; //скорость перемещения(отличается от предидущей скорости)

Всё это делается на один таймер и желательно от PowerDraw.


 
Black Fury   (2004-01-09 09:46) [2]

Спасибо за совет, обезательно попробую, но я подумываю об использование потоков и так ка я никогда до этого их не использовал, то у меня куча вопросов по работе с ними.
Мастера, не поможете с документацией?


 
smb   (2004-01-09 17:30) [3]

2 Black Fury
для этого можно попробовать так:

var i:integer=0;
...
if i/2=i div 2 then begin //2- можно больше, тогда задержка увеличится
//смещаем
 i:=0;
end;
...
//рисуем все
inc(i);

это конечно вариант плохой, т.к. когда много надо менять с все время разной скоростью, то придется создавать много переменных, а можно вместо двойки переменную N и все время её увеличивать, а когда достигнет макс значение(т.е. медленнее уже рисовать нам ничего не надо) то i:=0 а N:= мин значение. тогда можно обойтись двумя переменными, несколькими проверками и одним циклом отрисовки(Таймер).
Про процессы можешь посмотреть на сайте в статьях. была такая. а вообще раз на ДельфиХ пишешь то лучше таймер.

http://www.delphimaster.ru/articles/thread/index.html


 
Black Fur   (2004-01-09 22:26) [4]

Мастера! Спасибо за советы! Я уже вышел из положения не знаю как с точки зрения стиля, но задачу я решил и без потоков. Когда допишу игрушку обязательно похвастаюсь.


 
Nous Mellon ©   (2004-01-10 03:19) [5]


> отвечающий за положение второго изображение, но при таком
> решение этой
> задачи второй таймер срабатывает с запазданием и из за этого
> все дергается, как быть?

Потоки - втео решение!
Почитай Тексеру



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
1-1084223338
Serious Sam
2004-05-11 01:08
2004.05.23
Где ListView?


11-1070682903
Igit
2003-12-06 06:55
2004.05.23
Удалить PBitmap


9-1073419589
Stalker_23b
2004-01-06 23:06
2004.05.23
Исповедь домашнего игромейкера


14-1083226422
BiN
2004-04-29 12:13
2004.05.23
У нас в Москве машины с лентами


14-1083567626
Белый волк
2004-05-03 11:00
2004.05.23
Правильное отображение кирилицы в консольном приложении Delphi