2011-06-22 18 views
3

私は固定幅と高さでなければならないダイナミックテキストフィールドを持っています。自動リサイズダイナミックテキストフォントas3

動的テキストフィールドに入力する実際のテキストは変数です。

私がしたいのは、テキストがテキストフィールドの寸法内に完全に表示されない場合、フォントサイズを小さくすることです。

これをどのように正確に実行できるかについてのアイデアはありますか? 3.

答えて

4

は、このあなたはまだ探しているなら試してみる:(これはあなたのTextFieldが「複数行」に設定されている前提としています唯一の行が高い場合)

var smallLimit:int = 10; 
var format:TextFormat = new TextFormat(); 

tf.text = "THIS IS WAY TOO LONG"; 

var testSize:int = 200; 
while(testSize > smallLimit){ 

    updateFormat(testSize); 
    //trace(tf.numLines ); 

    if(tf.numLines > 1){ 
     testSize--; 
    }else{ 
     testSize = smallLimit; 
    } 
} 

function updateFormat(size:int):void{ 
    format.size = size; 
    tf.setTextFormat(format); 
} 
+0

それは動作します!ありがとうNHubbenと他のみんな。しかし、ちょっとした問題。 1行に収まるようにテキストのサイズを変更します。余分なテキストをサイズ変更する前に次の行に移動する方法はありますか?すなわち、テキストフィールドの幅と高さに適合する。多くの感謝 – echez

+0

行の数を確認する代わりに、ターゲットの幅と高さを設定し、それぞれを確認することができます。幅が涼しいが、高さが..でない場合は、それを小さくして再度確認してください。 TextFormatやTextFieldの操作で時間を費やす価値があります。乾杯 – NHubben

+1

誰か他の人がこの記事を新しい投稿に投稿して同じ質問をしました:http://icodesnip.com/snippet/actionscript-3/scale-text-to-fit-in-textfield-scale-textfield-to-fit - テキスト – NHubben

0

はこれを試すとも

、私が使用しています:

var tfspecial:int = tfFontSize + tfInterLine; 

while (tf.numLines < tf.height * tfspecial) { 
    tf.height += tfspecial; 
} 
+0

回答ありがとうございました。しかし、plsは私の知識不足を許します。私はこれに新しいです、あなたはちょうど奇妙な言葉を話しました。笑、私はそのコードをどのように実装できるのか分かりません。 plsが展開します。 – echez

+0

"... numLines Aaron

+0

何もないので、恥ずかしい...私は間違って何かをしている必要があります – echez

0

私はこの機能を書いていますが、なぜそれが動的テキストで一度しか動作しないのかわかりません。 tf上のコンテンツを置き換えるとき、それはnocorectly tfHeightを設定する。しかし、tfHeightの値を一定に設定すると動作します。var tfHeight = tf.height;

function fitFontSize(tf:TextField){ 
    //pobieramy oktualna wysokosc pola tekstowego 
    var tfHeight = tf.height; 
    // ustawiamy automatyczne rozszerzanie sie pola ze wzgledu na zawartosc 
    tf.autoSize = TextFieldAutoSize.LEFT ; 
    // tworzymy obiekt tekst format 
    var myFormat:TextFormat = new TextFormat(); 
    //ustawiamy poczatkowa wielkosc fonta na 100 
    var tfFontSize:Number =100; 
    // przypisujemy do obiektu 
    myFormat.size = tfFontSize; 
    tf.setTextFormat(myFormat); 
    /*Z PETLI FOR POMNIEJSZAMY SUKCESYWNIE CZCIONKE O JEDEN 
PIKSEL DO MOMENTU GDY tf TEKSTOWE OSIAGNIE POŻADANĄ 
WYSOKOSC LUB MNIEJSZA*/ 

    for (var i:int = 0; i<100; i++){ 
     tfFontSize-=1; 
     myFormat.size = tfFontSize; 
     tf.setTextFormat(myFormat); 
     if (tf.height<= tfHeight){ 
     break; 
     } 
    } 
} 
関連する問題