![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задержка 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 мс. Интервал гораздо больший получается.
Но дело не в этом. Шаг цикла увеличить надо просто.