Textfield() - 如何防止鼠标右键菜单

时间:2009-02-23 10:04:27

标签: actionscript-3 flex3

Textfield() - 如何防止出现鼠标右键菜单(具有COPY,PASTE,SELECT ALL等选项的菜单)。

4 个答案:

答案 0 :(得分:1)

您是否尝试过自定义InteractiveObject.contextMenu

答案 1 :(得分:1)

将字段selectable属性设置为false。

答案 2 :(得分:1)

FlashPlayers默认菜单项。

据我所知,无法删除有意义的基本FlashPlayer项目(设置和关于)。

FlashPlayers内置项目

您可以在编译时指定顶部(播放,暂停等)或从代码中删除顶部(播放,暂停等):

contextMenu.hideBuiltInItems();

或在全球范围内:

stage.showDefaultContextMenu = false; 

与TextField相关的菜单项

复制/粘贴/选择内置以及TextFields它似乎不能隐藏它们。然而,因为看起来你真的想要摆脱它们,这是一个解决方法。 下面的示例说明了如何在textField上添加透明按钮以侧移鼠标行为:

package  
{
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.ui.ContextMenu;        


    public class TestText extends Sprite 
    {

        private var textField:TextField;

        public function TestText()
        {
            // Removes the inbuit items from the contextMenu

            var contextMenu:ContextMenu = new ContextMenu();
            contextMenu.hideBuiltInItems();
            this.contextMenu = contextMenu;

            // Adds a simple input TextField

            textField = addChild(new TextField()) as TextField;
            textField.type = TextFieldType.INPUT;
            textField.text = "Test Text";

            // Covers the TextField with a transparent shape

            var shape:Sprite = addChild(new Sprite()) as Sprite;
            shape.graphics.beginFill(0, 0);
            shape.graphics.drawRect(0, 0, textField.width, textField.height);
            shape.mouseChildren = false;

            // Listens to a click on the mask to activate typing

            shape.addEventListener(MouseEvent.CLICK, eventClickHandler);
        }

        private function eventClickHandler(event:MouseEvent):void
        {
            // Sets the focus to the underlaying TextField and makes 
            // a full selection of the existing text.

            stage.focus = textField;
            textField.setSelection(0, textField.text.length);
        }
    }
}

答案 3 :(得分:1)

我找到了隐藏 TextFields 的默认上下文菜单项的方法!

只需设置自定义上下文菜单,然后隐藏内置项。现在,当你右键单击时,没有任何反应!

 // hide cut/copy/paste
 var cm:ContextMenu = new ContextMenu();
 cm.hideBuiltInItems();
 textfield.contextMenu = cm;