Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Еще один вопрос   Найти похожие ветки 

 
SerJaNT ©   (2007-04-04 05:40) [0]

На событие Image OnMouseMove и обновляю положение другого Image вот так:

image3.Left:=x - (image3.width div 2);
image3.top:=y+25;


Вопрос такой: когда я перемещаю курсор, то image3 просто перемещается за курсором, а как сделать чтобы он плавно перемещался так сказать с эффектом "оставания", т.е. если я резко дерну мышку, то image3 плавно проследует за ней?


 
KSergey ©   (2007-04-04 06:08) [1]

Я вижу, например, 2 варианта
Какой будет лучше работать - не знаю.

а) таймер. Собственно перемещение делаем в собитии таймера. В OnMouseMove лишь активизируем таймер, разумеется.
б) в OnMouseMove кидаем себе некое кастомное сообщение, в его обработчике двигаем картинку и, если новое положение картинки не достигло требуемых координат - кидаем снова себе это же кастомное сообщение. Разумеется - через PostMesage, т.е. в очередь. Возможно. придется добавить небольшую задержку (таймером? может быть, но только не Sleep или пустой цикл!!), чтобы не получалось, что перемещение происходит слишком быстро, да еще с разной скоростью в зависимости от производительности.

Разумеется, в обоих случаях картинку двигаем не в позицию координат мыши, а на кукоторую величину относительно предыдущего положения. Короче тут подумать немного надо как лучше координаты пересчитывать.

Кроме того, возможно (для красоты эффекта) есть смысл сделать даже так: в основном потоке - отрисовка картинки и ее "возбуждение события2 по ее перемещения (отриковке в новых координатах), а в дополнительном - таймер, который бы вне зависимости от всего прочего отсчитывал кол-во шагов, на которое надо переместить картинку. В противном случае на медленных машинах рискуем получить эффект, когда картинка будет двигаться медленее из-за того, что каждый раз будет сдвигатья лишь на один шаг, в то время, как время прошло уже порядочно и надо бы двинуться на два-три и т.д. шага, пусть это и будет приводить к некоторым "рывкам" - зато скорость движения будет постоянна (при большом времени отрисовки или прочих расходов на полезную работу приложения).



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.06 c
2-1176185938
Max727
2007-04-10 10:18
2007.04.29
Edit не регирует на нажатие enter


2-1175839373
Mikhail83
2007-04-06 10:02
2007.04.29
Interbase Генератор/Триггер не срабатывает


3-1170742393
Ванек
2007-02-06 09:13
2007.04.29
Ключевые поля и связи


2-1175944623
Ezorcist
2007-04-07 15:17
2007.04.29
a^b


15-1175711002
Kostafey
2007-04-04 22:23
2007.04.29
Что за баг такой странный: Circular datalinks are not allowed.