在Flex Flash Player中删除闪烁的光标

时间:2013-06-27 16:29:52

标签: flex cursor

我的表单上有一个MX TextInput字段。由于我们的一个用户有闪烁光标的癫痫发作问题,我试图禁用它但没有成功。通过控制面板,我可以防止Office应用程序和Web浏览器中的光标闪烁,但不能阻止使用Flash Player的Flex应用程序。有没有人遇到这个问题并有解决方案?

1 个答案:

答案 0 :(得分:0)

这是一个将光标全部移除的简单解决方案。我不确定你是否要删除光标(可行)或停止光标闪烁(似乎不太可行)。

它的工作原理是将基础TextField对象的selectable属性设置为false。 MX TextInput类具有自己的selectable属性,但TextInput中的代码也要求editable属性为false才能禁用选择。所以你需要扩展TextInput来解决这个问题。

底层TextField没有公开任何属性来阻止光标闪烁(我知道)。 TextField是Flash Player的内置类之一,因此修改此低级行为的可能性似乎很小。

这显然会破坏TextInput中复制/粘贴的能力。您可能需要设计一种临时启用选择以支持复制/粘贴或一般选择文本的方法。

package
{
    import mx.controls.TextInput;

    public class CustomTextInput extends TextInput
    {
        public function CustomTextInput()
        {
        }

        private var _hideCursor:Boolean = true;
        private var hideCursorChanged:Boolean = true;

        public function get hideCursor():Boolean
        {
            return _hideCursor;
        }

        public function set hideCursor(value:Boolean):void
        {
            if (value == hideCursor)
            {
                return;
            }
            hideCursorChanged = true;
            _hideCursor = value;
            invalidateProperties();
        }

        override protected function commitProperties():void
        {
            super.commitProperties();
            if (hideCursorChanged)
            {
                hideCursorChanged = false;
                textField.selectable = !_hideCursor;
            }
        }
    }
}