Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48

Как сделать быстрое плавное перемещение курсора влево, вправо?

14.10.2013, 23:09. Показов 8040. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
GetCursorPos(p);
     SetCursorPos(p.X+10,p.Y);
     Sleep(10);
     GetCursorPos(p);
     SetCursorPos(p.X-10,p.Y);
Пробовал так. Но получилось слишком медленно и не плавно. Есть еще какие-нибудь способы, кроме SetCursorPos?
p.s. делаю всё через таймер
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2013, 23:09
Ответы с готовыми решениями:

Как переназначить клик на клавиши (влево-вправо) на касание по объекту на экране (стрелка влево-вправо)
Скрипт для персонажа public class MovePlayer : Unit private void Update() { if...

Движение вправо/влево в зависимости от курсора
Привет. С моими скудными познаниями решил обратиться за помощью сюда) Вобщем задача следующая: экран поделен на две половины. Примерно...

Graphics: перемещение картинки вправо и влево
Переменная "rl" содержит в себе рисунок 128х32 цифры от 0 до 3. С каждым тиком таймера рисуемая область передвигается на 32 пиксела, при...

17
angstrom
14.10.2013, 23:21
Убавить приращение и задержку.
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
14.10.2013, 23:24  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Убавить приращение и задержку.
я много перепробовал с этой функцией, ничего нормального не вышло.
0
angstrom
14.10.2013, 23:30
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button7Click(Sender: TObject);
begin
  Timer2.Enabled := True;
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
var
  pt : TPoint;
begin
  GetCursorPos(Pt);
  SetCursorPos(pt.X + 1, pt.Y + 1);
end;
У таймера период 10 мСек.
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
14.10.2013, 23:52  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button7Click(Sender: TObject);
begin
  Timer2.Enabled := True;
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
var
  pt : TPoint;
begin
  GetCursorPos(Pt);
  SetCursorPos(pt.X + 1, pt.Y + 1);
end;
У таймера период 10 мСек.
Простите, но что за код Вы написали? Совершенно не по теме. Мне нужно, чтоб курсор передвигался влево и право, а в вашем коде зачем-то pt.Y + 1, да и вообще - где перемещение влево? Интервал таймеру я и сам выставить могу
0
angstrom
14.10.2013, 23:54
Я показал, что курсор движется плавно, а переделать под себя уже слабо, или нужно разжевать до мелкой кашицы и в ротик положить?
Кстати, перемещение в 10 пиксел, не очень заметно будет.
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
15.10.2013, 00:01  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Я показал, что курсор движется плавно, а переделать под себя уже слабо, или нужно разжевать до мелкой кашицы и в ротик положить?
Кстати, перемещение в 10 пиксел, не очень заметно будет.
Ну во-первых он перемещается не плавно и медленно. Во-вторых 10 пикселей хоть и ЗАМЕТНО, причем сильно, мне нужно 50-60 пикселей, так что плавность обязательна.

P.s. Вы показали как перемещать курсор, не более того. Это я и так знал.
0
angstrom
15.10.2013, 00:07
Цитата Сообщение от intehack Посмотреть сообщение
Ну во-первых он перемещается не плавно и медленно
Весьма плавно и достаточно быстро.
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
15.10.2013, 00:16  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Весьма плавно и достаточно быстро.
В одну сторону да, а если нужно то влево, то вправо - плавности не будет. И скорости тоже.
0
angstrom
15.10.2013, 00:23
Вот ведь упрямый
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
  oldPt : TPoint;
  Offs  : Integer = 50;
  XX    : Integer = 1;
 
procedure TForm1.Button7Click(Sender: TObject);
begin
  GetCursorPos(oldPt);
  Timer2.Enabled := True;
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
var
  pt : TPoint;
begin
  GetCursorPos(Pt);
  if Pt.X <> (oldPt.X + Offs) then
    SetCursorPos(pt.X + XX, pt.Y)
  else
  begin
    XX := -XX;
    Offs := -Offs;
  end;
end;
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
15.10.2013, 00:37  [ТС]
Еще что-нить есть?
p.s. angstrom не работает это. двигает только в одну сторону

procedure TForm1.Button7Click(Sender: TObject);
begin
GetCursorPos(oldPt);
Timer2.Enabled := True;
end;

и зачем мне эта процедура?) мне нужно чисто с таймером, т.к. идет проверка нажата ли клавиша if getasynckeystate($04)<>0 then и выполняется код.
0
angstrom
15.10.2013, 00:46
Цитата Сообщение от intehack Посмотреть сообщение
двигает только в одну сторону
Да ну, неужели?
Цитата Сообщение от intehack Посмотреть сообщение
и зачем мне эта процедура?
Чтобы получить первоначальную координату мышки (служит реперной точкой), можно получить и в OnCreate формы.

Мне лень на каждый пук создавать новый проект, для вас Button7 и Timer2.
Вложения
Тип файла: rar intehack.rar (11.4 Кб, 19 просмотров)
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
15.10.2013, 14:02  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Да ну, неужели?

Чтобы получить первоначальную координату мышки (служит реперной точкой), можно получить и в OnCreate формы.

Мне лень на каждый пук создавать новый проект, для вас Button7 и Timer2.
Не то, что нужно. В моем случае не подойдет
0
angstrom
15.10.2013, 14:19
Как я понял, в вашем случае ничего не подойдёт. По причине, незнания желаемого.
1 / 1 / 0
Регистрация: 12.01.2013
Сообщений: 48
15.10.2013, 15:51  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Как я понял, в вашем случае ничего не подойдёт. По причине, незнания желаемого.
То, что сделали Вы не работает правильно с условием if getasynckeystate($04)<>0 then

Добавлено через 1 час 7 минут
upp
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
15.10.2013, 16:21
Что именно не работает и с каким кодом, можешь внятно написать?
0
angstrom
15.10.2013, 16:44
Вот этого ТС и не может. Перечитай тему, он постоянно меняет условие, а крайним остаётся отвечающий.
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
15.10.2013, 17:38
angstrom, поэтому я и предлагаю ТС еще раз сформулировать задачу, показать код, который не работает и объяснить, чем не устраивают предложенные варианты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2013, 17:38
Помогаю со студенческими работами здесь

Самостоятельное перемещение PictureBox по форме вправо и влево
Суть такова,мне нужно что бы PictureBox сам перемещался по форме то в лево,то в право на одинаковую дистанцию.Я в Visual еще новичек,так...

Перемещение влево-вправо летящего объекта мышкой?
Добрый день, есть куб, который движется по Z и Y координате, движение задается приложением силы (addForce), камера закреплена за объектом. ...

Как сделать плавное перемещение MovieClip?
Есть две кнопки слева и справа, и по центру MovieClip. Как сделать плавное перемещение MovieClip код кнопки слева on (rollOver) {...

Как сделать плавное перемещение элемента?
Как сделать хотя-бы (если это просто) перемещение допустим кнопки на 100px вправо плавно? Спасибо заранее

Как сделать плавное перемещение нарисованной фигуры по форме?
Здравствуйте, у меня есть задача: Передвижение фигур. Вообщем выполняю её так: создаю стартовую фигуру, указываю куда она должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru