簡體   English   中英

如何在 AS3/AIR 的 textArea 中動態創建上下文菜單?

[英]How can I create a context menu on the fly in a textArea in AS3/AIR?

我正在將應用程序從 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 的事件數據,這似乎有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM