I’m currently trying to set text size dynamically based on a stylesheet globally through a base font size variable. I’m currently using the method tfWidthController to check if the width is greater than the desired width and if so to decrease the font size in the css and reparse the css and have it autosize. But for some reason its not autosizing but the css is being manipulated. Do you see what im doing wrong? Thank you for taking the time to help me!
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>';
}
}
}
I figured it out – you need to change the htmlText every time you resize.
I also did a working test for this and you can see it here: http://wonderfl.net/c/A310