apache-flex - 如何在 AS3/AIR 的 textArea 中动态创建上下文菜单?
问题描述
我正在将应用程序从 Flex/Flash 迁移到 Flex/AIR 32。
许多年前,我开始使用 flextenibles SpellCheck 模块。它为 textArea 创建了一个自定义组件,该组件将在拼写错误的单词下划线,然后在上下文菜单中显示拼写错误的单词。
我已成功迁移它,但是让自定义上下文菜单弹出的唯一方法是非常小心地用鼠标右键单击文本下方的波浪线,而不是文本本身。当我右键单击文本时,它会显示一个默认的上下文菜单。它实际上从来没有使用过构建自定义上下文菜单的功能。我已将以下代码放置在扩展 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”事件。
解决方案
好吧,我找到了解决方法。
我使用以下内容创建事件侦听器;
this.textField.addEventListener(MouseEvent.CONTEXT_MENU,showMenu);
然后我更改了处理程序以使用来自 mouseEvent 而不是 contextMenuEvent 的事件数据,这似乎有效。
推荐阅读
- javascript - 删除重复的 GeoJSON 线串,同时支持具有更多属性的对象。在 Javascript 中
- json - 如何合并从 S3 读取的多个 JSON 文件,转换为单个 .csv 并存储在 S3 中?
- c# - ASP.NET Core Identity - 确认电子邮件返回 url
- android - 映射对象时某些属性为空时忽略元素
- c++ - 将变量从函数 A 传递到 main 并返回到另一个
- python - 如何将 get_tld 库用于数据集中的整个列?
- c# - Linq - 按价格双倍订购 Json 产品
- python - django 和 html 输出
- android - Android Studio 中 jpg 文件的“文件名必须以 .xml 结尾”错误
- java - 有没有办法在用 Java 关闭客户端连接后重用它的端口?