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

Reply via email to