自动调整动态文本字体as3

时间:2011-06-22 12:19:36

标签: actionscript-3 text dynamic resize autosize

我有动态文本字段,必须是固定的宽度和高度。

将填充动态文本字段的实际文本是变量。

如果文本未在文本字段的维度内完全显示,我想要做的是减小字体大小。

关于如何准确执行此操作的任何想法?

另外,我正在使用AS 3.

3 个答案:

答案 0 :(得分:4)

如果您还在寻找,请尝试一下:(这假设您的TextField设置为“multiline”,并且当它进入时只有1行高)

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 );
}

答案 1 :(得分:0)

试试这个:

var tfspecial:int = tfFontSize + tfInterLine;

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

答案 2 :(得分:0)

我写了这个函数,但我不知道它为什么只在动态文本上运行一次。当替换tf上的内容时,nocorectly设置tfHeight。但是如果你设置常量tfHeight值ins t varHfight = 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;
        }
    }
}