«стеклянная панель» для as3, чтобы перехватывать события для всего на сцене? - PullRequest
0 голосов
/ 12 февраля 2009

Есть ли что-то вроде java 'glasspane' в as3?

Стеклянная панель полезна, когда вы хотите иметь возможность ловить события или закрашивать область, которая уже содержит один или несколько компонентов. Например, вы можете деактивировать события мыши для многокомпонентной области, если стеклянная панель перехватывает события. Или вы можете отобразить изображение на нескольких компонентах, используя стеклянную панель. http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html

Зачем это? Хотя некоторые анимации выполняются во флэш-памяти, я хочу предотвратить запуск любых событий мыши. Я мог бы удалить всех слушателей систематически, а затем повторно добавить их после анимации, но если есть что-то вроде стеклянного стекла, это может быть более простым способом достижения того же эффекта.

В настоящее время я думаю:

  1. добавить спрайт на сцену
  2. растянуть на ширину и высоту сцены,
  3. присвойте спрайту высший z-порядок,
  4. захватить все события на этом спрайте и остановить их распространение?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2009

, если вы установите

enabled=false;
mouseChildren=false;

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

1 голос
/ 15 мая 2013

Для более конкретного подхода, например, только блокировать щелчки, но подводить мышь и т. д. через я использую этот подход. Он использует обработчик событий этапа «clickBlocker» во время фазы захвата, останавливая распространение на любой другой объект.

public function blockClicks():void{
    if(!stage) return;
    stage.addEventListener(MouseEvent.CLICK, clickBlocker, true); //useCapture!
}

private function clickBlocker(event:MouseEvent):void{
    trace("Me (the stage) gets the "+event.type+" first, and I block it @"+event.stageX+"/"+event.stageY);
    event.stopImmediatePropagation();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...