如何动态更改spark组件TextArea中的某些单词颜色。例如,我想在文本中“快速的棕色狐狸跳过懒狗。”单词“dog”为红色,单词“fox”为绿色。
<s:TextArea textFlow="{scriptTextAreaTextFlow}" change="{doSomething(event)}" text ="A quick brown fox jumps over the lazy dog." id="tarea1"/>
在每个更改函数上调用doSomething时,她会找到单词“dog”的每个位置以及单词“fox”的每个位置。我需要做的就是动态改变这些单词的颜色。在mx中,使用TextRange很容易。
tr = new TextRange(tarea1, false, start, end);
tr.color = "#00FF00"
现在,在spark中我找到了一种用TextFlow
为它着色的方法scriptTextAreaTextFlow = TextFlowUtil.importFromString(resoult);
其中“resoult”是基于TextArea中的文本生成的HTML代码,因此单词dog和fox是彩色的。问题是检查(和着色)是在实时(onChange)和每次
之后完成的scriptTextAreaTextFlow = TextFlowUtil.importFromString(resoult);
TextArea锚移动到位置0(开始)。我发现解决这个问题的唯一方法是在编辑之前记住锚定位置并在着色后设置它,但我正在寻找更好的解决方案。
请帮忙......
由于
答案 0 :(得分:0)
另一种方法是捕获onChange并使用正则表达式更改关键字周围的HTMLText以包含'font color ='指定。