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