2016-06-07 83 views
-2

默認情況下,火花文本區域有一個內置的文本菜單與「剪切」,「複製」,「粘貼」,「刪除」等選項。如何禁用Actionscript 3文本區域的默認上下文菜單?

我想用一個自定義,以取代該文本菜單,但我在使用禁用默認的一個問題。

在第一次添加自定義一個還後我得到了默認的文本菜單,然後從第二次我收到定製的ContextMenu。

我使用下面的代碼的textarea:

<s:TextArea id="txtArea" width="100%" height="100%" borderVisible="false" focusAlpha="0.01" 
      verticalScrollPolicy="off" selectionHighlighting="always" styleName="TextBox" 
      needsSoftKeyboard="true" focusRect="false" buttonMode="true" useHandCursor="true" mouseChildren="true"/> 

並使用下面的代碼添加自定義文本菜單右側鼠標到文本區:

eventMap.mapListener(view.txtArea , MouseEvent.RIGHT_MOUSE_DOWN ,onRightMouseDown); 

private function onRightMouseDown(e:MouseEvent):void 
    { 
     var item1:ContextMenuItem = new ContextMenuItem("Cancel", true); 
     var item2:ContextMenuItem = new ContextMenuItem("Select", true); 

     var contextMenu:ContextMenu = new ContextMenu(); 
     contextMenu.hideBuiltInItems(); 
     contextMenu.customItems.push(item1); 
     contextMenu.customItems.push(item2); 

     view.txtArea.contextMenu = contextMenu; 
    } 

但我不知道爲什麼默認的ContextMenu第一次來。

所以任何人有一個想法,爲什麼它正在發生或者我做錯了嗎?

回答

1

你得到原來的上下文菜單中的第一次的原因是因爲你沒有把它關閉,直到第右鍵發生後。每次點擊右鍵時,您也不必要地重建上下文菜單。

爲了解決這個問題,你需要把你在onRightMouseDown函數中的代碼放到你的類構造函數中,或者如果你沒有,可以在swf運行後立即運行。這隻需要發生一次。

+0

嗨@Glitcher我試圖把我的代碼到類的構造函數,並試圖把代碼變成創作完成,但在兩種情況下我得到的第一個右鍵單擊默認的上下文菜單。 – Ashish

0

我已經添加了對整個應用

addEventListener(MouseEvent.RIGHT_CLICK, function (... rest):void 
{ 
}) 

和defaultContextMenu被禁用。

1

以下代碼解決我的問題:

var contextMenu = new ContextMenu(); 
contextMenu.hideBuiltInItems(); 
contextMenu.clipboardMenu = false; 
contextMenu.addItem(new ContextMenuItem("Start Select")); 
contextMenu.addItem(new ContextMenuItem("Start Copy")); 

(txtArea.textDisplay as RichEditableText).contextMenu = contextMenu; 

而不是把自定義上下文菜單直接進入textarea的控制,如果我們將穿上RichEditableText,就上方,然後,將解決這個問題。

相關問題