动态改变文本流 spark flex

Posted

技术标签:

【中文标题】动态改变文本流 spark flex【英文标题】:Dynamically change text flow spark flex 【发布时间】:2012-05-01 02:30:17 【问题描述】:

如何动态更改 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(开始)。我发现解决这个问题的唯一方法是在编辑之前记住锚点位置并在着色后设置它,但我正在寻找更好的解决方案。

请帮忙...

谢谢

【问题讨论】:

用 var txtLayFmt:TextLayoutFormat = tarea2.getFormatOfRange(null, 14, 16); 解决了它txtLayFmt.color = "#00FF00"; tarea2.setFormatOfRange(txtLayFmt, 14, 16); tarea2.setFocus(); 如果你解决了你的问题而不是评论,发布为答案并接受它是否适合你.. 【参考方案1】:

另一种方法是捕获 onChange 并使用正则表达式更改关键字周围的 HTMLText 以包含“font color=”指定。

【讨论】:

以上是关于动态改变文本流 spark flex的主要内容,如果未能解决你的问题,请参考以下文章

在 FLEX 中动态改变 Datagrid 列的宽度

flex实现瀑布流布局为啥不适合动态加载数据

Flex:平滑来自Flickr的动态图像

Flex 自定义ToolTip并动态创建应用

第6课:Spark Streaming源码解读之Job动态生成和深度思考

Spark版本定制第6天:Job动态生成和深度思考