文本编辑器制作(2):TextField方案

       源码下载      

       刚接到这个需求的时候,觉得应该不复杂。也见过很多文本编辑器了。网上的太多太多了。
不过紧接着就是问题来了:

面对的问题:
●动态输入文本框 在AS3里怎么输入中文呢?
        ◎如果在Flash CS里制作,把一个Text文本框拖到舞台的。那我告诉你。你真是太棒了。你不会面对这个问题的。
           因为在Flash里从工具里拖出的Text文本会支持中文输入的。
        ◎纯AS3项目也不会面对这个问题
        ◎Flex项目动态文本框就会有此问题 As3动态的文本框输入中文 是Adobe的一个Bug

 

        问题总是在你还没有准备好的时候到来”__屌丝程序员语录


        苦逼的程序员总是会莫名的选择那条最摸黑 最难走 最危险的路。
        佛曰:天堂有路你不走,地狱无门你自来。
        屌丝程序员:我不入地狱谁入地狱?
        
        我就是需要在Flex里加这个工具:不过也有解决的方法:查了n多资料是说把中文字体打包的。
        这些都是网上说的啊。不过我问了一个有多年Flash开发的老鸟。他悄悄的告诉我一下内容:

        “在TextField的FocusEvent.FOCUS_IN事件侦听中加入:flash.system.IME.enabled=true;”

       

flash.system.IME.enabled=true;//flash小写
/*
使用 IME 类,您可以在客户端计算机上运行的 Flash 运行时
应用程序中直接对操作系统的输入法编辑器 (IME) 进行操作。
可以确定是否安装了 IME、当前是否启用了 IME 以及启用了哪个 IME。
您可以在 应用程序中禁用或启用 IME,并且可以执行其他受限制的函数,
具体取决于操作系统。*/

●获取本地字体名称:Font.enumerateFonts(true);
             返回:Array 系统Font 的集合[Font,Font....] 
                     数组元素为Font对象,通过Font对象的fontName来取得名字

●设置字体:不能直接给TextFomat.font="宋体"
                需要中英文字体对照转化 中英文字体对照表

 

var tfm:TextFormat=new TextFormat(FontNames.getFontEnglishiName(fontList.selectedItem.label));
tfm.font=fontEnglshiName;
if(_txtInput.selectionBeginIndex<_txtInput.selectionEndIndex)
{
    _txtInput.setTextFormat(tfm,_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
}

●设置所选的文本的样式:flash.text.TextField.setTextFormat(format:TextFormat, beginIndex:int=-1, endIndex:int=-1):void
           

var txtStarIndex:int=txtInput.selectionBeginIndex;//选择的起始索引
var txtEndIndex:int=txtInput.selectionEndIndex//选择的结束索引
var tfm:TextFormat=new TextFormat();
    tfm.color=fontColorPicker.selectedColor;
_txtInput.setTextFormat(tfm,txtStarIndex,txtEndIndex);

●加粗:不像其他的样式,对所选的内容完全应用设置。加粗不同
           加粗会做:加粗与取消加粗 的判断
           点“加粗” 判断如下:

          

          

private function setBoldFomate():void
{
    //获取一个txtField的所选文本的样式
    var tf:TextFormat=_txtInput.getTextFormat(_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
    var tfm:TextFormat=new TextFormat();
    if(tf.bold==false||tf.bold==null)
    {
       //加粗
       tfm.bold=true;
       _txtInput.setTextFormat(tfm,_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
     }else{
       //取消加粗
       tfm.bold=false;
       _txtInput.setTextFormat(tfm,_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
     }
}

●TextFiled的Htmltext可读写的
  我们可以通过给Textfield设置htmlText="<Font  size="" color=""><B></B></Font>"
  给TextField设置内容。同时 ,我们通过设置TextField的.setTextFomat造成了TextField的改变,此时我们读取TextField的htmlText
  系统会给我们返回对目前TextField的htmlText描述

 ●大量的正则表达式应用

原文地址:https://www.cnblogs.com/naiking/p/2729870.html