Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Задержка sleep


Тимоха111 ©   (2011-01-19 22:58:00) 

Всем добрый вечер, надо передвинуть курсор плавно, вот код:
       for x:=pt.x to pt.x+600 do
       begin
         sleep(1);
         SetCursorPos( x, pt.y + 1);
       end;

вопрос в след., меня не устраивает скорость в  sleep(1), медленно движется, может есть другие функции, которые позволят сделать задержку меньше?


sniknik   (2011-02-26 17:50:00) [1]

> допустим это медленно, как ускорить?
var
 x: real;
 sx, sy: integer;
begin
 x:=-15;
 while x < 15 do begin
   SetCursorPos(trunc(20*x)+400,500-trunc(60*sin(x)));
   x:= x+0.001;
   //sleep(1);
   Application.ProcessMessages;
 end;
end;


KilkennyCat   (2011-02-26 17:21:00) [2]


> Вот как сделать ее плавное движение ?
>

а она в реальности разве плавно движется?


Enot   (2011-02-26 16:36:00) [3]

Человек неправильно немного вопрос задал. Мышка перемещается быстро , но рывками. От этого и создается ощущение замедленности. Вот как сделать ее плавное движение ?


Германн   (2011-01-20 02:19:00) [4]


> Тимоха111   (20.01.11 01:54) [9]
>
> Функция sin взял для проверки.
> Делаю имитацию человека за компьютером. Курсор мышки должен
> перемещаться из точки А в точку Б, по каким либо траекториям
>

Тебе уже посоветовали на другом форуме увеличить шаг. Будет быстрее. Чем не подходит?


Тимоха111   (2011-01-20 02:14:00) [5]

x:=x+0.01; изменил шаг, стало пошустрее.
надо придумать функцию по которой будет траектория движения.
Спасибо за совет, думаю поможет в задаче!


Inovet   (2011-01-20 02:02:00) [6]

> [9] Тимоха111   (20.01.11 01:54)
> Делаю имитацию человека за компьютером. Курсор мышки должен
> перемещаться из точки А в точку Б, по каким либо траекториям

Для проверки, как это делает система, у форму поставь обработчик на событие меремещения мыши, выводи координаты куда-нибудь в файл или в мемо, разверни форму на весь экран, попробуй мышью за 1 секунду двинуть из угла в угол, посмотри сохранённые координаты.


Тимоха111   (2011-01-20 01:54:00) [7]

Функция sin взял для проверки.
Делаю имитацию человека за компьютером. Курсор мышки должен перемещаться из точки А в точку Б, по каким либо траекториям


Inovet   (2011-01-20 01:36:00) [8]

> [7] Тимоха111   (20.01.11 01:21)
> допустим это медленно, как ускорить?

А что ты вообще делаешь? а то так загадочно двигаешь указателем, что непонять.


Тимоха111   (2011-01-20 01:21:00) [9]

var x: real;
   sx,sy: integer;
begin
x:=-15;
while x<15 do
 begin
 SetCursorPos(trunc(20*x)+400,500-trunc(60*sin(x)));
 x:=x+0.001;
 sleep(1);
 end;

допустим это медленно, как ускорить?


KilkennyCat   (2011-01-20 01:07:00) [10]

Кэролл это бы легко объяснил


Inovet   (2011-01-20 00:58:00) [11]

> [4] KilkennyCat ©   (20.01.11 00:48)
> а даж если и надо - не получится.

Копьютеры становятся всё быстрее, а программы работают всё медленнее.


KilkennyCat   (2011-01-20 00:48:00) [12]


> А оно надо по всем и так быстро?

а даж если и надо - не получится.


Inovet   (2011-01-20 00:25:00) [13]

Выбор 1 мс и 600 шагов означает желание проехать указателем по всем 600 позициям за 0.6 с. А оно надо по всем и так быстро?


Leonid Troyanovsky   (2011-01-19 23:19:00) [14]


> Тимоха111   (19.01.11 22:58)  

> вопрос в след., меня не устраивает скорость в  sleep(1),
>  медленно движется,

За подобные передвижения положен пожизненный эцих с гвоздями.
Хотя, Sleep здесь и вовсе не нужен, двигай по таймеру.

--
Regards, LVT.


DVM   (2011-01-19 23:18:00) [15]

sleep(1) не усыпляет поток на 1 мс. Интервал гораздо больший получается.

Но дело не в этом. Шаг цикла увеличить надо просто.


Наверх

Титульная страница Поиск, карта сайта Написать письмо