• 文本编辑器制作(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描述

     ●大量的正则表达式应用

  • 相关阅读:
    We7很给力
    用Windows Media Player截图的方法
    控制IMG图片的大小缩放
    ASP.NET 2.0轻松搞定统计图表(二)
    VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
    db2表名大小写问题
    来自Rails世界的项目管理工具Redmine
    Downloading C# ActiveX Components through CAB File(转)
    windows下借助InstantRails环境搭建redmine(转)
    JavaScript获取系统当前日期和时间、星期几
  • 原文地址:https://www.cnblogs.com/naiking/p/2729870.html
Copyright © 2020-2023  润新知