Форум: "Прочее";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизЕще один вопрос Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c