如何在AS3/AIR中的文本区域中动态创建上下文菜单?

brgchamk  于 2022-09-21  发布在  Apache
关注(0)|答案(1)|浏览(138)

我正在将一个应用程序从Flex/Flash迁移到Flex/AIR 32。

很多年前,我开始使用Flexible拼写检查模块。它为extArea创建了一个定制组件,该组件将为拼写错误的单词加下划线,然后在上下文菜单中显示拼写错误的单词。

我已经成功地移植了它,然而,使定制上下文菜单弹出的唯一方法是非常小心地用鼠标右键点击文本下方的曲折线条,而不是文本本身。当我右击文本时,它会显示一个默认的上下文菜单。它实际上从未使用过构建自定义上下文菜单的功能。我将以下代码放在自定义类中的不同位置,该类扩展了mx.control s.textArea;

private function creationCompleteHandler(event:Event):void
{
    this.contextMenu = new ContextMenu;
    this.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,showMenu);
}

包括在构造函数及其原始位置中,创建具有相同行为的子代。

在Flex/Flash版本中,右击文本将调出自定义上下文菜单。

编辑:

随着我进行更多的调试,我发现组件中的“this.extField”正在触发MouseEvent.CONTEXT_MENU,并且它永远不会到达“this.contextMenu”事件。

h43kikqp

h43kikqp1#

我在附近找到了一份工作。

我使用以下代码创建事件侦听器;

this.textField.addEventListener(MouseEvent.CONTEXT_MENU,showMenu);

然后,我将处理程序更改为使用MouseEvent中的事件数据,而不是上下文MenuEvent中的事件数据,这似乎起作用了。

相关问题