0

ユーザーがテキストを入力し、TextArea の幅と高さを変更できる TextArea があります。サイズを変更すると、テキストが予想どおりに壊れます。サイズ変更後に TextArea スキンが暗黙的な改行を追加した場所を見つける必要があります。

環境

  • フレックスビルダー 4.6
  • フレックス SDK 4.6.0
  • フラッシュプレーヤー 11.1

This is just plain text that
breaks after the word "that".

TextArea lineBreak プロパティが toFit で、テキストに CR または LF 文字がない場合に改行の位置を見つける方法についてのアイデアはありますか? 上記の例では、位置は 28 になります。

4

1 に答える 1

0

テキストを行コンポーネントに分割して、個々のテキストの長さを非常に簡単に返すことができますが、「テキストレイアウトフレームワーク」の魔法を使用する必要があります。

  • まず、TextAreaのtextFlowプロパティ(プロパティではなく)にアクセスします。これにより、 TextFlowtextインスタンスが返されます。これは、TextArea内のテキストのモデルです。
  • このオブジェクトにはflowComposer、テキストのレイアウトを処理し、多くの情報を運ぶがあります。
  • そのタイプはIFlowComposerですが、個々の行にアクセスするには、 StandardFlowComposerにキャストする必要があります。
  • これで、 TextFlowLinelinesのコレクションであるプロパティにアクセスできます。
  • これらの各行にはtextLengthプロパティがあります。

だから次の

var composer:StandardFlowComposer = 
    myTextArea.textFlow.flowComposer as StandardFlowComposer;
for each (var line:TextFlowLine in composer.lines) 
    trace(line.textLength)

(あなたの例で)

29
30
于 2012-05-22T16:34:07.780 に答える