文本编辑器制作(3):TextArea方案

TextArea方案,相对这个在Flex里的项目使用比较简单。

相比在Flex里使用As3动态的TextField 需要

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

更省心了。你压根就不用去理会什么字体嵌入的。省心省力。

 

不过让人头疼的事情来了

●如何获得TextArea里的htmlText?
如何给TextArea设置htmlText?

如何设置选中的字段的样式?

●获取TextArea的所选内容

  在TextArea的focusIn事件里加入

     _currentTextFlow=_inputTextArea.textFlow;//让TextArea的textFlow来侦听选取事件
     _currentTextFlow.addEventListener(SelectionEvent.SELECTION_CHANGE, listenerSelectionChange);
 
   private function listenerSelectionChange(event:SelectionEvent):void
   {
    // 查找范围选定元素
    var range:ElementRange = event.selectionState ? 
    ElementRange.createElementRange(event.selectionState.textFlow,
    event.selectionState.absoluteStart, event.selectionState.absoluteEnd) : null;
    _intSelectionStart = range.absoluteStart;//起始索引
    _intSelectionEnd = range.absoluteEnd;//结束索引
   }

笔者遇到这个问题的时候,先是把Flex的所有的Text相关的组件都尼玛拖到舞台了。

发现TextArea TextInput都没有htmlText属性啊。所以就使用了方案1啊。

后来参阅了前人的代码,发现可以使用TextFlow来搞定

给TextArea设置字体fontFamily

                     字号fontSize

                     颜色color

 

private function setFontFomate(e:Event):void
{
  var styleObj:TextLayoutFormat = new TextLayoutFormat();
  styleObj.fontFamily=fontList.selectedItem.label;
  _txtInput.setFormatOfRange(styleObj);
}


 

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