簡體   English   中英

如何使用as3在CSS中動態設置文本大小

[英]How to dynamically set text size in css with as3

我目前正在嘗試通過基本字體大小變量全局基於樣式表動態設置文本大小。 我目前正在使用方法tfWidthController來檢查寬度是否大於所需的寬度,如果要減小寬度來減小css中的字體大小並重新解析css並使其自動調整大小。 但是由於某種原因,它無法自動調整大小,但正在操縱CSS。 你看到我在做什么錯嗎? 感謝您抽出寶貴的時間來幫助我!

    package com.intentionally censored.view {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.StyleSheet;
import com.intentionally censored.model.MatchupModel;
import com.ff0000.ads.utils.Trace;
import com.google.analytics.debug.Info;

public class MatchupView extends MovieClip {

    // on stage
    public var maxTextFieldWidth = 150;
    public var tf:TextField;
    private var baseFontSize = 10;
    public var $_tfCurrentWidth;

    public function tfWidthController():void {
        $_tfCurrentWidth = tf.textWidth;
        trace('textfields current width is ' + $_tfCurrentWidth);
        trace('textfields max width is ' + maxTextFieldWidth);
        while ($_tfCurrentWidth > maxTextFieldWidth) {
            trace ('$_tfCurrentWidth is '+$_tfCurrentWidth);
            trace ('maxTextFieldWidth is '+maxTextFieldWidth);
            baseFontSize-=1;
            applyStyles();
        }
    }

    private function get styles():StyleSheet {
        var _styles:StyleSheet = new StyleSheet();
        _styles.parseCSS("* {font-family:Playoff Bold Italic;font-style:boldItalic;}.em {font-size:"+(baseFontSize+2)+"px; }.redMicroTxt{font-size:"+baseFontSize+"pt;color:#c00000;}.medWhiteTxt{font-size:"+(baseFontSize+3)+"pt;color:#FFFFFF;}.redMediumTxt{font-size:"+(baseFontSize+6)+"pt;color:#c00000;}.whiteLargeTxt,.whiteMedTxt{font-size:"+(baseFontSize+6)+"pt;color:#FFFFFF;font-style:italic;}");   
        return _styles;
    }

    public function MatchupView() {
        tfWidthController();
        applyStyles();

    }

    protected function applyStyles():void {
        tf.styleSheet = styles;
        tf.autoSize = "center";
    }

    public function prepareFor( $_matchupModel:Object ):void {
        Trace.out( this, 'prepareFor()' );
        var _timeMessage:String = '';
        var _dateMessage:String = 'LIVE NOW'; // -------------- logic for 160 includes "\r"
        trace( $_matchupModel.gameStatus );
        if( $_matchupModel.gameStatus != 'Live Now' ) {             
            _timeMessage = $_matchupModel.timeMessage;
            _dateMessage = 'PM/ET';
        }


        tf.htmlText = '<span class="redMicroTxt">' + $_matchupModel.team1Rank + " "+'</span>'+
                        '<span class="whiteLargeTxt">' + $_matchupModel.team1 + '</span>'+
                        '<span class="medWhiteTxt"> vs </span>'+
                        '<span class="redMicroTxt">' + $_matchupModel.team2Rank + " "+'</span>'+
                        '<span class="whiteLargeTxt">' + $_matchupModel.team2 + '</span> '+
                        '<span class="redMediumTxt">' + _timeMessage +
                        '<span class="redMicroTxt">' + _dateMessage + '</span></span>';
    }

}

}

我想通了-每次調整大小時都需要更改htmlText。

while ($_tfCurrentWidth > maxTextFieldWidth) {
    trace ('$_tfCurrentWidth is '+$_tfCurrentWidth);
    trace ('maxTextFieldWidth is '+maxTextFieldWidth);
    var oldHtml:String = tf.htmlText;
    tf.htmlText = '';
    tf.htmlText = oldHtml;
    baseFontSize-=1;
    applyStyles();
}

我也為此進行了工作測試,您可以在這里看到它: http : //wonderfl.net/c/A310

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM