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);
_currentTextFlow.addEventListener(SelectionEvent.SELECTION_CHANGE, listenerSelectionChange);
{
// 查找范围选定元素
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);
}
{
var styleObj:TextLayoutFormat = new TextLayoutFormat();
styleObj.fontFamily=fontList.selectedItem.label;
_txtInput.setFormatOfRange(styleObj);
}