#apache-flex #air #flex4
#apache-flex #air #flex4
Вопрос:
Я переношу приложение с Flex / Flash на Flex / AIR 32.
Много лет назад я начал использовать модуль проверки орфографии flextenibles. Он создает пользовательский компонент для текстовой области, который подчеркнет слова с ошибками, а затем отобразит слово с ошибками в контекстном меню.
Я успешно перенес его, однако единственный способ вызвать всплывающее пользовательское контекстное меню — это очень осторожно щелкнуть правой кнопкой мыши по волнистой строке под текстом, а не по самому тексту. Когда я щелкаю правой кнопкой мыши по тексту, отображается контекстное меню по умолчанию. На самом деле он никогда не получает доступ к функции для создания пользовательского контекстного меню. Я разместил следующий код в различных местах пользовательского класса, который расширяет mx.controls.textArea;
private function creationCompleteHandler(event:Event):void
{
this.contextMenu = new ContextMenu;
this.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,showMenu);
}
Включение в конструктор и его исходное местоположение createChildren с таким же поведением.
В версии Flex / flash щелчок правой кнопкой мыши по тексту вызовет пользовательское контекстное меню.
Редактировать:
По мере дальнейшей отладки я обнаруживаю, что «this.TextField» внутри компонента запускает MouseEvent.CONTEXT_MENU, и оно никогда не доходит до события «this.ContextMenu».
Ответ №1:
Ну, я нашел обходной путь.
Я использовал следующее для создания прослушивателя событий;
this.textField.addEventListener(MouseEvent.CONTEXT_MENU,showMenu);
Затем я изменил обработчик, чтобы использовать данные события из MouseEvent вместо ContextMenuEvent, это, кажется, работает.