I try to apply UITextFormat to an UITextField in a custom component
but the new format won't show. what am i doing wrong?
package tests.components
{
import flash.text.TextLineMetrics;
import mx.core.UIComponent;
import mx.core.UITextField;
import mx.core.UITextFormat;
public class TestCustomComponent extends UIComponent
{
private var txt:UITextField;
public function TestCustomComponent()
{
super();
}
/*
* Create the TextField add some TextFormat and add it to
* the displayList.
*/
override protected function createChildren():void {
super.createChildren();
//Use TextFormat and apply some formats
var format:UITextFormat = new
UITextFormat(this.systemManager);
format.font = "Verdana";
format.bold = true;
format.color = 0x804020;
format.size = 20;
//The TextField that should be formated
txt = new UITextField();
//The documentation says TextFormat won't be applied
//when a styleSheet is in use, naive approach to so set
this to null
//is this enough?
txt.styleSheet = null;
txt.styleName = null;
//Apply the TextFormat for defaults and all current Text
txt.defaultTextFormat = format;
txt.text = "The quick brown Fox...";
this.addChild(txt);
}
/*
* Sets the measures to the width of the text plus some offset
*/
override protected function measure():void {
super.measure();
var metrics:TextLineMetrics = txt.getLineMetrics(0);
this.measuredWidth = this.measuredMinWidth =
metrics.width + 20;
this.measuredHeight = this.measuredMinHeight =
metrics.height + 2;
}
/*
* Add a rounded Rectangle at the back of the TextField
*/
override protected function
updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
this.graphics.beginFill(0xff8800, 1);
this.graphics.drawRoundRect(0, 0, unscaledWidth,
unscaledHeight, 10);
this.graphics.endFill();
txt.setActualSize(unscaledWidth, unscaledHeight);
}
}
}