Re: [flexcoders] Fail to apply UITextFormat to UITextField in custom Component
Instead of using defaultTextFormat, try setting the text and then calling myText.setTextFormat(myFormat). Also calling addchild and then setting the formatting may make a difference but it's been a while since i looked at this stuff so it might not. If neither of these things help and i have some time later today I'll try to get into it. - Daniel Freiman On Sun, Apr 6, 2008 at 10:25 PM, brianrusseldavis [EMAIL PROTECTED] wrote: This thread seems to be the only help out there for UITextField and Formatting it via UITextFormat. The Adobe documentation fails to provide a working example. So I guess I will pose the question here with a very very simple example. Why is the following code wrong? The text displays but the font size is not changing. ?xml version=1.0 encoding=utf-8? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; layout=absolute creationComplete=init() mx:Script ![CDATA[ import mx.core.UITextFormat; import mx.core.UITextField; private function init():void { var myText:UITextField = new UITextField; var myFormat:UITextFormat = new UITextFormat(this.systemManager); myFormat.size = 30 myText.defaultTextFormat = myFormat myText.validateNow(); myText.text = Hello Hello Hello! addChild(myText); } ]] /mx:Script /mx:Application Brian Russel Davis http://www.brickabracka.com/learning b[at]brickabracka[dot]com ndkamp wrote: Styles can override text formating when the parent of a UITextField is invalidated, but only having some formatting overridden is a little weird. no, all of the formatting is overridden. Functionality for setting format based on style is in the UITextField class, I think the function is validateNow() thanks dan, that pointed me to the right direction. I traced validateNow() in UITextField where the format is set using styles - overriding all of the formatting that might have been applied using UITextFormat. I did toggle styleChangedFlag to false and voilĂ - all the formatting using UITextFormat were applied. Now I have the choice to extend UITextFormat and to override validateNow() or just use Styles for all the formatting and forget about UITextFormat, which is probably the recommended way - just getting started with flex you see. thanks again, solved. --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.com, Daniel Freiman [EMAIL PROTECTED] wrote: Styles can override text formating when the parent of a UITextField is invalidated, but only having some formatting overridden is a little weird. Functionality for setting format based on style is in the UITextField class, I think the function is validateNow(), but I not 100% certain about that. For future reference, I asked about font type because embeding fonts incorrectly could account for the described behavior (as I originally understood it), and the rendering engine for device fonts (in very few and specific cases) also has its own quirks. - Dan Freiman On Feb 4, 2008 10:53 AM, ndkamp [EMAIL PROTECTED] wrote: ok, I found that if i wrap the textField in a sprite and add this in createChildren, then formatting will be applied correctly: var wrapper:Sprite = new Sprite(); wrapper.addChild(txt); this.addChild(wrapper); Well, i'm not really comfortable with this but I think I need to look closer at styles, since formats seem to get overriden when a TextField is add directly to the component...? --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.comflexcoders% 40yahoogroups.com, ndkamp ndkamp@ wrote: dan, thanks for your answer. I'm using device and/or embedded fonts, but right here I don't really care about the fonts. I'm just puzzled why the formatting doesn't seem to work for me. I'm using UITextFormat, because of the options it gives me with anti-aliasing and measuring. A I tried using TextFormat but that wont help. I did not look at styling and skinning, so I'm not sure if the formats get overriden by styles in a later stage by the framework. --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.comflexcoders% 40yahoogroups.com, Daniel Freiman FreimanCQ@ wrote: Are you using embeded or device fonts? Also, is there a reason you are using UITextFormat instead of TextFormat? Even when using with a UITextField, 99% of the time using UITextFormat instead of TextFormat is unnecessary and makes thing more complicated. - Dan Freiman On Feb 4, 2008 9:22 AM, ndkamp ndkamp@ wrote: Thanks for your answer. I know the text and orange background are ok, but the formats won't show. Are you really getting bold text, what about the size and color? what if you add: format.italic = true, format.underline = true; format.font = Georgia; Do they show? can't get the formats to work. Im
Re: [flexcoders] Fail to apply UITextFormat to UITextField in custom Component
This thread seems to be the only help out there for UITextField and Formatting it via UITextFormat. The Adobe documentation fails to provide a working example. So I guess I will pose the question here with a very very simple example. Why is the following code wrong? The text displays but the font size is not changing. ?xml version=1.0 encoding=utf-8? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; layout=absolute creationComplete=init() mx:Script ![CDATA[ import mx.core.UITextFormat; import mx.core.UITextField; private function init():void { var myText:UITextField = new UITextField; var myFormat:UITextFormat = new UITextFormat(this.systemManager); myFormat.size = 30 myText.defaultTextFormat = myFormat myText.validateNow(); myText.text = Hello Hello Hello! addChild(myText); } ]] /mx:Script /mx:Application Brian Russel Davis http://www.brickabracka.com/learning b[at]brickabracka[dot]com ndkamp wrote: Styles can override text formating when the parent of a UITextField is invalidated, but only having some formatting overridden is a little weird. no, all of the formatting is overridden. Functionality for setting format based on style is in the UITextField class, I think the function is validateNow() thanks dan, that pointed me to the right direction. I traced validateNow() in UITextField where the format is set using styles - overriding all of the formatting that might have been applied using UITextFormat. I did toggle styleChangedFlag to false and voilĂ - all the formatting using UITextFormat were applied. Now I have the choice to extend UITextFormat and to override validateNow() or just use Styles for all the formatting and forget about UITextFormat, which is probably the recommended way - just getting started with flex you see. thanks again, solved. --- In flexcoders@yahoogroups.com, Daniel Freiman [EMAIL PROTECTED] wrote: Styles can override text formating when the parent of a UITextField is invalidated, but only having some formatting overridden is a little weird. Functionality for setting format based on style is in the UITextField class, I think the function is validateNow(), but I not 100% certain about that. For future reference, I asked about font type because embeding fonts incorrectly could account for the described behavior (as I originally understood it), and the rendering engine for device fonts (in very few and specific cases) also has its own quirks. - Dan Freiman On Feb 4, 2008 10:53 AM, ndkamp [EMAIL PROTECTED] wrote: ok, I found that if i wrap the textField in a sprite and add this in createChildren, then formatting will be applied correctly: var wrapper:Sprite = new Sprite(); wrapper.addChild(txt); this.addChild(wrapper); Well, i'm not really comfortable with this but I think I need to look closer at styles, since formats seem to get overriden when a TextField is add directly to the component...? --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.com, ndkamp ndkamp@ wrote: dan, thanks for your answer. I'm using device and/or embedded fonts, but right here I don't really care about the fonts. I'm just puzzled why the formatting doesn't seem to work for me. I'm using UITextFormat, because of the options it gives me with anti-aliasing and measuring. A I tried using TextFormat but that wont help. I did not look at styling and skinning, so I'm not sure if the formats get overriden by styles in a later stage by the framework. --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.com, Daniel Freiman FreimanCQ@ wrote: Are you using embeded or device fonts? Also, is there a reason you are using UITextFormat instead of TextFormat? Even when using with a UITextField, 99% of the time using UITextFormat instead of TextFormat is unnecessary and makes thing more complicated. - Dan Freiman On Feb 4, 2008 9:22 AM, ndkamp ndkamp@ wrote: Thanks for your answer. I know the text and orange background are ok, but the formats won't show. Are you really getting bold text, what about the size and color? what if you add: format.italic = true, format.underline = true; format.font = Georgia; Do they show? can't get the formats to work. Im using flex beat 3 btw. thanks. --- In flexcoders@yahoogroups.com flexcoders%40yahoogroups.comflexcoders%40yahoogroups.com, shrikant.patil gt_shrikant@ wrote: hi, i
Re: [flexcoders] Fail to apply UITextFormat to UITextField in custom Component
hi, i have tested u r file i got a orange backgrounded, vardana, bold text saying that : The quick brown Fox... i hope it is working fine... ndkamp wrote: 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); } } } -- View this message in context: http://www.nabble.com/Fail-to-apply-UITextFormat-to-UITextField-in-custom-Component-tp15266357p15267393.html Sent from the FlexCoders mailing list archive at Nabble.com.