Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2009, 18:40   #1
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию Управление движением объекта мышью

Пишу игру, на подобе пинг понга, управление происходит стрелками с клавиатуры. Хочу сделать управление движением мышки, т.е повели влево мышь image.left:=image.left - 20 , повели вправо image.left:=image.left + 20 . Подскажите как сделать.
program123 вне форума Ответить с цитированием
Старый 08.03.2009, 18:44   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Обрабатывайте событие MouseMove у объекта по которому вы водите мышью. К примеру:
Код:
Procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
...
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 08.03.2009, 18:47   #3
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

Я знаю об обработчике событий . Но тут переменные х и у, как им присвоить движение мыши не понятно, а вот если на клики делать, то там всё ясно в процедуре описано Button: TMouseButton;
program123 вне форума Ответить с цитированием
Старый 08.03.2009, 18:50   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну так при клике запоминаем что надо, например позицию нажатия. Потом просто зная тот же X и при перемещении (OnMouseMove) вычитаем и получаем < 0 ил и> 0 относительно нажатия вот вам и двигайте что хотите. В чем проблема, точней ?
BOBAH13 вне форума Ответить с цитированием
Старый 08.03.2009, 18:50   #5
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

а зачем им присваивать7 они возвращают позицию курсора...
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 08.03.2009, 19:17   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от KORN Посмотреть сообщение
а зачем им присваивать7 они возвращают позицию курсора...
Странный вопрос. Ну смотрите есть объект на X = 10, вы кликаите на него и хотите его перетащить, нажимаите на X = 12 = OldX, и попадаите по объекту, потом начинаите двигать мыщью, и получиите к примеру X = 11, тогда Object.Left = Object.Left - OldX + X. Так вы можете двигать объект.

p.s. вроде верный расчет, если память не подводит, вот зачем запоминать OldX
BOBAH13 вне форума Ответить с цитированием
Старый 08.03.2009, 19:27   #7
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

ты видимо не понял про что я... я про то что зачем давать значения X и Y если они передают значения курсора и с помощью их можно задать координаты объекта
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 08.03.2009, 19:38   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от KORN Посмотреть сообщение
ты видимо не понял про что я... я про то что зачем давать значения X и Y если они передают значения курсора и с помощью их можно задать координаты объекта
Извените конечно но видимо Вы не поняли о чем Я Вы не учитываите что пользователь может нажать не на 1й пиксель в левом верхнем углу (если речь о 2D) а где-нибудь по середке, и тогда как только человек двинет мышь, объект выравнится ровно под курсором (левый верхний угол объекта), в моем же случае этого не случится.

Думаю теперь Вы понимаите о чем я

p.s. я не собираюсь продолжать флуд, т.к. видимо Вы - Korn не понимаите о чем я вам говорю, и причем тут одна ось, эта система касается хоть n^10 осей, суть не изменится.

Последний раз редактировалось BOBAH13; 08.03.2009 в 19:47.
BOBAH13 вне форума Ответить с цитированием
Старый 08.03.2009, 19:44   #9
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

ну дык тогда просто одну ось координат вообще можно не обрабатывать
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 08.03.2009, 20:11   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Что-то вы мудрите...
Код:
Обявляем глобальные переменные
xold,yold: integer;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
xold:=0;
yold:=0;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if xold=0 then
xold:=x;
if yold=0 then
yold:=y;
Image1.Left:=Image1.Left-xold+x;
xold:=x;
Image1.Top:=Image1.Top-yold+y;
yold:=y;
end;
И все... И никаких кликов...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта User>lia Общие вопросы Delphi 4 16.01.2009 16:37
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene DomKr@t Мультимедиа в Delphi 0 14.12.2008 01:52
Работа с мышью Amery Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 28.05.2008 21:19
обновление в блоге - Управление мышью Pblog Обсуждение статей 0 27.05.2007 03:17