0

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 (開始) に移動します。これを解決する唯一の方法は、編集前にアンカー位置を記憶し、カラーリング後に設定することですが、より良い解決策を探しています。

助けてください...

ありがとう

4

1 に答える 1

0

もう 1 つの方法は、onChange をトラップし、正規表現を使用してキーワードの周りの HTMLText を変更し、'font color=' の指定を含めることです。

于 2012-04-19T14:52:24.807 に答える