IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Движение по карте
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Решил сделать небольшой проектик.
В общем хочу сделать подобие движение по игровой карте (как в стратегиях и других играх). Работаю с OnMouseMove. Может я сделал немного глупо, но я растянул карту (Image) на всю её ширину и длину. Другого мне в голову пока, что не пришло.
Вот код движения карты вправо
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not(PtInRect(Rect(Form1.Left,
Form1.Top,
Form1.Left + Form1.Width-20,
Form1.Top + Form1.Height), ClientToScreen(Point(x, y))))
then Timer1.Enabled := true
else Timer1.Enabled := false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Image1.Left >= 640 - PW then
Image1.Left := Image1.Left - 7;
end;

Но почему-то когда Image двинется немного вправо, то координаты меняются и изображение двигать можно даже на середине.
Что тут можно сделать?

Сообщение отредактировано: Сергей Меркурьев -


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вот почему ты вызываешь Form1.Top, и так далее, но ClientToScreen(Point(x, y)) ? Чей ClientToScreen вызывается, не расскажешь? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


ClientToScreen вызывается на Image.
Цитата
Вот почему ты вызываешь Form1.Top

А что мне вызывать? У меня ведь форма меньше самого изображения, а мышь вроде всегда именно на форме находится.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А попробуй-ка вот это:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Timer1.Enabled :=
PtInRect(Rect(form1.Width - 20, 0, form1.Width, form1.Height), Point(image1.Left + X, Y))
end;

(до Дельфи доберусь только послезавтра, так что пока - теоретически. Потом проверю...)

 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


volvo, так всё работает ;)
У меня ещё небольшой вопрос есть, когда происходит движение иногда проскальзывают белые полосы. Можно что-нибудь с этим сделать?


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Можно попробовать установить у формы DoubleBuffered := True, это немного снизит "мерцания".
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Большое спасибо за помощь, мерциния теперь вовсе исчезли smile.gif


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 15:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name