2012-04-19 59 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以包括「字體顏色=」標識。