PDA

Просмотр полной версии : Непонятное поведение прослушивателей событий


DZHETIGAPA
09.01.2011, 00:10
Создаю менюшку. На каждую кнопку-менюшку вешаю события и слушатели к ним:

for (var i:int = 0; i <5; i++ )
{
var rect:Sprite3D = new Sprite3D();
rect.addChild(Lib.massiv[i]);
rect.x = -widthMenu / 2+i*125;
rect.y = -heightMenu / 2;
rectSpr.addChild(rect);
rect.buttonMode = true;

rect.addEventListener(MouseEvent.CLICK, onClick);
rect.addEventListener(MouseEvent.MOUSE_OVER, onOver);
rect.addEventListener(MouseEvent.MOUSE_OUT, onOut);

}

А вот и сами методы-слушатели событий:

private function onClick(e:MouseEvent):void
{
TweenLite.to(e.target, 3, { x: -325 } );
}

private function onOver(e:MouseEvent):void
{
TweenLite.to(e.target, 1, { z:-150} );
}

private function onOut(e:MouseEvent):void
{
TweenLite.to(e.target, 1, { z:0} );
}

При наведении на кнопку-меню Z объекта уменьшается, а при отводе - становится в изначальное положение. То есть все работает. Но как только кликаю по этой кнопке, то если курсор мышки выходит за пределы кнопки - движение к координате x=-325 прекращается. Если же я сопровождаю кнопку курсором, то все нормально, объект перемещается в координату -325. То есть метод-слушатель onClick работает, если курсор мышки наведен на объект-кнопку.

В чем дело7 Кто сможет объяснить.

TanaTiX
09.01.2011, 00:28
Но как только кликаю по этой кнопке, то если курсор мышки выходит за пределы кнопки - движение к координате x=-325 прекращается
Правильно, срабатывает onOut.
Сделайте проверку на исходное значение, и если оно не таковое, и при этом мыша уже не задействована - двигайте к исходному состоянию.

DZHETIGAPA
09.01.2011, 00:33
Я уже сам дошел. Нужно логическую переменную ввести.

Спасибо!