画面に合わせて幅を動的に調整するテキスト フィールドがあります。テキストが収まらない場合は、テキストを切り捨てて「...」を追加します。しかし、テキスト値が使用可能なテキスト フィールド幅よりも長いかどうかはどうすればわかりますか?
5 に答える
ねえ、シンプルに行くのはどうですか:-)
while ( textfield.numLines > MAX )
textfield.text = textfield.text.slice(0, -4) + "...";
楽しみ!
これとまったく同じ機能が必要でした。オブジェクトのサイズを変更する必要があるサイズ変更イベントがトリガーされるたびに、TextField
次のように小さなループを実行しました。
tfMessage.text = message;
if(tfMessage.width > maximumWidth)
{
tfMessage.appendText("...");
while(tfMessage.width > maximumWidth)
{
tfMessage.text = tfMessage.text.substr(0, -4) + "...";
}
}
テキストを更新するたびにオブジェクトのサイズが自動的に変更されるようにするには、TextField
オブジェクトのautoSize
プロパティが に設定されていることを確認してください。列挙TextFieldAutoSize.LEFT
で他の値を使用できますが、私には最適です。使用例:TextFieldAutoSize
LEFT
tfMessage.autoSize = TextFieldAutoSize.LEFT;
やり過ぎのように思えるかもしれませんが、これが最善の、最もクリーンなオプションです。TextField
その上、私はこれを使用して、平均的なコンピューターでパフォーマンスを低下させることなく、何百ものオブジェクトのサイズを変更します。AVM2 の微調整と最適化をうまく行っている Flash のおかげです。
とにかく、これが役に立てば幸いです。私にとっては完璧に機能します。あなたのプロジェクトで頑張ってください。
yourTextField.textWidth
TextField のテキストの長さを示します。TextField の幅ではなく、テキストの幅を実際に取得するには、最初に TextField の autosize プロパティを設定してください。
OK、頭を悩ませた後、文字列を textField にクロップしたままにし、新しい MC に余分な「...」を追加して、その可視性を false に設定する方法を考えました。textField.textWidth >= textField.width の場合、「...」MC が表示され、textField の最後に配置されます。これは、textField の内側または外側にある可能性があります。
おそらくこれを行う唯一の方法は、textWidth が幅よりも長い場合、テキストを文字ごとにループして、一度に文字を追加または削除し、省略記号を追加して、全体がほぼ埋まるまで幅を確認することです。テキストフィールド。