PDA

Просмотр полной версии : Как уловить быстрые движения мыши?


tik_webmaster
12.07.2007, 14:42
Как уловить быстрые движения мыши?

Например есть мувиклип и должно выполняться какое либо действие onMouseOver.
При достаточно быстрых движениях мышью действия не выполняются.

Убедиться в этом можно, привязав обработчик на действия мыши к тонкой линии-мувиклипу.
Чем тоньше линия, тем более быстрые движения мыши не замечаются.

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

Помогите, пожалуйста.

iNils
12.07.2007, 15:02
Нет события onMouseOver.

Ведьмак
12.07.2007, 15:05
может FPS большой поставить ? :))

iNils
12.07.2007, 15:07
Мышью управляет система. Можно лишь повесить на событие onMouseMove hitTest

tik_webmaster
12.07.2007, 15:17
большой FPS не помогает

chingachgoog
12.07.2007, 15:23
Подозреваю, что целиком избавиться не удастся. Дискретное никогда не станет аналоговым.
Надо пройтись поиском: тут где-то было, какие обработчики более быстрые, а какие более медленные.

Wolsh
12.07.2007, 15:30
А что, нельзя проблему решить по-другому? Через hitArea например. Не представляю, что-то такое тонкое... - и быстро движется мышь... - значит вокруг нет интерактивных объектов (во всяком случае при быстром движении мыши Вы бы все равно ни в кого точно не попали), и можно сделать клип-хитарею, шире вашей видимой линии пиксов на 30, поставить ему _альфа ноль и всё.

iNils
12.07.2007, 16:23
> _альфа ноль
это не гуд, надо (если это не кнопка которая Button) сделать клип, который будет выполнть роль области реагирования. Потом присовить эту область с помощью hitArea, а само область спрятать через _visible = false;

Wolsh
12.07.2007, 22:35
Ну да, так легче аппарату :)

silin
13.07.2007, 00:46
а можно наоборот: оставить линию как есть, а за мышью пустить невидимый мувик, хиттест которого с линией и отслеживать.. чем он больше тем надежнее срабатывание, но больше ошибка во времени/координате, подбирать надо..
mouseMC.startDrag(true);//мувик для 'утолщения' мыши
mouseMC._visible=false;
var prevHit=false;//чтобы избежать многократного срабатывания
function onMouseMove(){
var hit=lineMC.hitTest(mouseMC);
if(hit && !prevHit) trace("over");
prevHit=hit;
}