【问题标题】:Auto Resize Dynamic Text Font as3自动调整动态文本字体 as3
【发布时间】:2011-06-22 12:19:36
【问题描述】:

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

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

如果文本没有完全显示在文本字段的尺寸内,我想做的是减小字体大小。

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

另外,我使用的是 AS 3。

【问题讨论】:

    标签: actionscript-3 text dynamic resize autosize


    【解决方案1】:

    如果您仍在寻找,请尝试一下:(假设您的 TextField 设置为“多行”,并且在初始化时只有 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 );
    }
    

    【讨论】:

    • 它有效!感谢 NHubben 和其他所有人。不过有个小问题。它调整文本大小以仅适合一行。无论如何在调整大小之前将多余的文本移动到下一行。即适合文本字段的宽度和高度。非常感谢
    • 您可以设置目标宽度和高度并检查每一行,而不是检查行数。如果宽度很酷,但高度不是......把它变小并再次检查。值得花一些时间来使用 TextFormat 和 TextField 操作。干杯
    • 其他人刚刚将此 sn-p 发布到了一个新帖子中,提出了同样的问题:icodesnip.com/snippet/actionscript-3/…
    • 非常感谢大家。那个链接真的很有帮助 NHubben。非常感谢
    【解决方案2】:

    试试这个:

    var tfspecial:int = tfFontSize + tfInterLine;
    
    while (tf.numLines < tf.height * tfspecial) {
        tf.height += tfspecial;
    }
    

    【讨论】:

    • 嘿 2smacks,谢谢你的回答。但请原谅我缺乏知识。我是新手,你刚刚说的是一种奇怪的语言。大声笑,我不知道如何实现该代码。请展开。
    • “...numLines
    • tf 是您的文本字段。你不明白什么?
    【解决方案3】:

    我写了这个函数,但我不知道为什么它只能在动态文本上工作一次。当替换 tf 上的内容时,它不会正确设置 tfHeight。但如果你设置常量 tfHeight 值 insted 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多