Как получить кнопку, даже если не в фокусе с ActionScript 3.0? - PullRequest
0 голосов
/ 31 июля 2010

Я работал над созданием кнопки с помощью MovieClip.Я использую следующие события:

 this.addEventListener(MouseEvent.CLICK,OnClick);
 this.addEventListener(MouseEvent.ROLL_OVER,OnButtonRollOver);
 this.addEventListener(MouseEvent.ROLL_OUT,OnButtonRollOut);
 this.addEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown);
 this.addEventListener(MouseEvent.MOUSE_UP,OnMouseUp);

Все работает нормально, за исключением того, что когда я нажимаю кнопку и [без отпускания кнопки мыши] я перетаскиваю мышь из фокуса кнопки и затем отпускаюкнопка мыши событие OnMouseUp не вызывается.

Как я могу это исправить?Спасибо, Y_Y.

1 Ответ

2 голосов
/ 31 июля 2010

Внутри вашего обработчика OnMouseDown вы можете добавить следующее, чтобы получить желаемое событие MouseEvent.MOUSE_UP:

private function OnMouseDown(e:MouseEvent):void
{
    stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUp);
}

private function onStageMouseUp(e:MouseEvent):void
{
    stage.removeEventListener(MouseEvent.MOUSE_UP, onStageMouseUp);
    // handle mouse up here
}

Конечно, это означает, что вам придется проделать дополнительную работу, чтобы убедиться, что обработчики добавляются / удаляются соответствующим образом. Вы также можете кэшировать ссылку на целевую кнопку в вашем обработчике OnMouseDown в случае, если сценарий, который вы описываете, происходит, и вам все равно нужно знать, какая кнопка была нажата (при условии, что ваши обработчики находятся вне области действия самой кнопки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...