2016-06-07 5 views
-2

По умолчанию искра TextArea имеет встроенный ContextMenu с параметрами «Вырезать», «Копировать», «Вставить», «Удалить» и т. Д.Как отключить контекстное меню по умолчанию в текстовой области в ActionScript 3?

Я хочу заменить этот ContextMenu на пользовательский, но у меня возникла проблема с отключением по умолчанию.

После добавления пользовательского в первый раз, я получаю по умолчанию ContextMenu, а со второго раза получаю пользовательский ContextMenu.

Я использую следующие коды для текстового поля:

<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"/> 

И используя следующие коды для добавления пользовательских ContextMenu в текстовой области правой кнопки мыши:

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; 
    } 

Но я не знаю, почему default ContextMenu приходит в первый раз.

Итак, у кого-нибудь есть идея, почему это происходит или где я делаю неправильно?

ответ

1

Причина, по которой вы получаете исходное контекстное меню в первый раз, состоит в том, что вы не выключаете его, пока не произойдет первый щелчок правой кнопкой мыши. Вы также бесполезно перестраиваете контекстное меню каждый раз, когда есть щелчок правой кнопкой мыши.

Чтобы исправить это, вам нужно взять код, который у вас есть в своей функции onRightMouseDown, и поместить его в свой конструктор класса, или, если у вас его нет, он будет запущен, как только будет запущен swf , Это нужно только однажды.

+0

Привет @Glitcher Я попытался поместить мои коды в конструктор классов, а также попытался поместить коды в создание Complete, но в обоих случаях я получаю контекстное меню по умолчанию в первом щелчке правой кнопкой мыши. – 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, как описано выше, то, что будет решить эту проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^