PDA

Просмотр полной версии : RollOver и свой курсор


Kolan
03.02.2009, 15:54
Здравствуйте!

Есть некий контейнер в которой используется свой курсор. Делается это просто:


private function onMouseRollOut(e:MouseEvent):Void
{
_mouseCursor.visible = false;
Mouse.show();
}

private function onMouseRollOver(e:MouseEvent):Void
{
setChildIndex(_mouseCursor, numChildren - 1);
_mouseCursor.visible = true;
Mouse.hide();
}

private function onMouseMove(e:MouseEvent):Void
{
var p: Point = globalToLocal(new Point(e.stageX, e.stageY));
_mouseCursor.x = p.x;
_mouseCursor.y = p.y;
}


При входе в контейнер и при выходе из него скрывается и показывается стандартный курсор, а при движении меняются координаты моего. mouseCursor — это MovieClip с картинкой.


На контейнере лежат еще мувиклипы. При наведении на них нужно изменить курсор. Делаю я это тоже по событию RollOut и RollOver, но уже дочерних мувиклипов.

Проблема в том, что при движении вправо стандартный курсор наезжает на мувиклип, который я использую в качестве курсора. Из-за этого RollOver стреляет чаще чем нужно.

Можно анализировать relatedObject в событиях Roll дочерних мувиклипов,


private function onCommentBorderMouseOver(e:MouseEvent):Void
{
if (e.relatedObject != _mouseCursor) {
...
}
}


но тогда при движении вправо оно никода не будет возникать, так как стандартный курсор всегда над мувиклипом-курсором.

Если закомментировать код в onMouseMove, то есть не двигать _mouseCursor вслед за стандартным курсором, то проблемы не будет и Roll события будут срабатывать корректно.

Как с этим бороться?

PS
А нельзя ли как-то стандартный курсор менять?

mre
03.02.2009, 16:26
Если я правильно понял проблему, для своих курсоров прописать:
mouseEnabled = false;
mouseChildren = false;

Kolan
03.02.2009, 17:17
Благодарю mre, то что надо.

Кстати а есть ли возможность установить хотпоинт (то есть точку, которая и будет являться указателем) у курсора? Или следует просто смещать мувиклип?

mre
03.02.2009, 17:32
Второе.

loover
31.03.2009, 02:44
а как сделать, чтобы курсор был всегда сверху, насмотря на программно добавляемые объекты?

Rzer
31.03.2009, 02:53
Для этого надо немного подумать, а не спрашивать сразу то, что придет тебе в голову.

mre
31.03.2009, 12:38
а как сделать, чтобы курсор был всегда сверху, насмотря на программно добавляемые объекты?

Объекты добавлять в контейнер, который лежит ниже, чем курсор.

cdc7600
31.03.2009, 14:13
а как сделать, чтобы курсор был всегда сверху, насмотря на программно добавляемые объекты?
addChildAt(childname,getChildIndex(your_cursor)-1);