![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Вопрос как при нажатиии на форму, сделать чтоб объект плавно перемещался к месту клика. Знаю как получить координаты клика и положения курсора, знаю что это нужно делать через таймер,но как??выходит только движения объекта вместе с курсором.и как сделать чтоб при зажатии правой клавиши и движении мыши можно было как бы листать карту.ПОМОГИТЕ ПОЖАЛУЙСТО
желательно куски кода с пояснениями.буду очень благодарен |
#2
|
|||
|
|||
![]() Если двигать объект по форме, то:
1. создайте переменные - текущие координаты объекта, координаты клика; 2. при клике по форме сохраняйте координаты клика. 3. на таймер вешайте процедуру уменьшающую разность между координатами клика и координатами объекта, на 1 квант движения (например 1 пиксель); 4. перерисуйте форму. |
#3
|
||||
|
||||
![]() Код:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
![]() Простите за оффтоп, а чем Таймер плох ? И зачем получать все координаты вектора от стартовой точки, до конечной ?
|
#5
|
||||
|
||||
![]() Таймер плох тем, что у него квант времени достаточно большой и для плавного движения его может и не хватить. А координаты нужны опять же для того, что-бы иметь возможность создавать разнообразные эффекты типа замедление/ускорение и т.д. Да и вообще там много чего можно полезного наворотить имея этот массив.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
||||
|
||||
![]() да я и так это понимаю.и всё это есть кроме процедуры на уменьшение разности.напишите пожалуйсто
|
#7
|
|||
|
|||
![]() Самый простой способ уменьшить разность:
cx,cy - координаты клика; x,y - координаты объекта; dx,dy -искомый вектор; Код:
ru.wikipedia.org/wiki/Алгоритм_Брезенхэма |
Этот пользователь сказал Спасибо Sphynx55 за это полезное сообщение: | ||
hsMapk (18.05.2014)
|
#8
|
||||
|
||||
![]() Вот вам процедурка возвращающая массив координат вектора:
Код:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
![]() спасибо)сделал.
|
#10
|
||||
|
||||
![]() хотя нет,не то
вот что на таймер сделал Код:
Код:
|
#11
|
||||
|
||||
![]() Ну возьмите мой вариант с массивом координат и по нему отправляйте контрол в путь.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
||||||
|
||||||
![]() Ты сделал все с точность до наоборот
![]() По форм клик только сохраняем координаты: Код:
Код:
Код:
|
#13
|
||||
|
||||
![]() С таким кодом герой будет ползать только по диагонали и влево/вправо. А произвольное движение не выйдет.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
|||
|
|||
![]() Не совсем так. Вначале, если возможно, по диагонали, затем по прямой к цели. Траекторию можно приблизить к прямолинейной применяя небольшие хитрости с рандомом.
|
#15
|
||||
|
||||
![]() Цитата:
![]() jmp $ ; Happy End! The Cake Is A Lie. |