2012-04-19 78 views
0

如何动态更改火花组件TextArea中的某些单词颜色。例如,我想在文本中“快速的棕色狐狸跳过懒狗。”单词“狗”是红色和词“狐狸”绿色。动态更改文本流火花flex

<s:TextArea textFlow="{scriptTextAreaTextFlow}" change="{doSomething(event)}" text ="A quick brown fox jumps over the lazy dog." id="tarea1"/> 

在每一个变化函数DoSomething的叫,她发现“狗”字和词“狐狸”的每一个位置的每一个位置。我需要做的就是动态改变这些单词的颜色。在mx中,使用TextRange很容易。现在

tr = new TextRange(tarea1, false, start, end); 
tr.color = "#00FF00" 

,火花我找到了一种与TextFlow的

scriptTextAreaTextFlow = TextFlowUtil.importFromString(resoult); 

上色它其中“resoult”是生成的HTML代码,基于文本区,从文本,这样的话狗和狐狸的着色。问题是,检查(和着色)都是现场做(的onChange)和每

scriptTextAreaTextFlow = TextFlowUtil.importFromString(resoult); 

文本区域锚移动后位置0(开始)。我发现解决这个问题的唯一方法是在编辑之前记住锚点的位置,并在着色后设置它,但我正在寻找更好的解决方案。

请帮助...

感谢

+0

与 变种txtLayFmt解决它:textLayoutFormat中= tarea2.getFormatOfRange(NULL, 14, 16); txtLayFmt.color =“#00FF00”; tarea2.setFormatOfRange(txtLayFmt, 14, 16); tarea2.setFocus(); } – 2012-04-19 15:06:22

+0

如果你解决你的问题,而不是评论,张贴为答案,并接受,如果它适用于你.. – 2012-04-20 10:03:47

+0

我不知道那... – 2012-04-20 14:00:07

回答

0

另一种方法是将捕获的onChange和使用正则表达式来改变周围的关键字将htmlText以包括“字体颜色=”标识。