One way is to override invalidateSize()  and have them do nothing when
your renderers are at work.

 

In updateDisplayList, invalidateDisplayListFlag should still be set so
that calls to invalidateDisplayList() don't do anything.  I think in
addChild it calls invalidateSize() which restarts the loop.  You can
always override invalidateDisplayList() as well.

 

________________________________

From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of Derek Adams
Sent: Saturday, April 19, 2008 6:29 PM
To: [email protected]
Subject: [flexcomponents] Re: Drawing text on a component without adding
subcomponents

 

I have a component that hands off rendering its graphics to a chain 
of pluggable renderers. The way I have it implemented right now, the 
chain is being executed in the overridden updateDisplayList function. 
The problem that I run into is when a renderer tries to add a child 
to the parent container, it generates an infinite loop due to 
addChild forcing an invalidateDisplayList(). Since I don't really 
need to interact with the text fields, I figured that drawing the 
bitmaps would be a usable solution. If you know a way to get around 
the infinite loop problem though, I would rather just be able to add 
components via the renderers. I know you would normally add children 
in the createChildren() function, but the renderers decide what gets 
added and the parent component has no knowledge of their internals.

Thanks for your help!
Derek

--- In [email protected]
<mailto:flexcomponents%40yahoogroups.com> , "Alex Harui" <[EMAIL PROTECTED]> 
wrote:
>
> Looks right to me. Those are the rules today. Why is having a 
child
> TextField so bad? The Bitmaps can be expensive.
> 
> 
> 
> ________________________________
> 
> From: [email protected]
<mailto:flexcomponents%40yahoogroups.com> 
> [mailto:[email protected]
<mailto:flexcomponents%40yahoogroups.com> ] On Behalf Of Derek Adams
> Sent: Saturday, April 19, 2008 10:07 AM
> To: [email protected]
<mailto:flexcomponents%40yahoogroups.com> 
> Subject: [flexcomponents] Drawing text on a component without adding
> subcomponents
> 
> 
> 
> I have a custom component that needs to be able to paint a label on 
> its graphics context without adding a subcomponent for it. I 
figured 
> out a way to do it, but it seems like a hack. Does anybody know a 
> better way? Here is the code.
> 
> // Create an auto-sized text field.
> var label:IUITextField = new UITextField();
> label.autoSize = TextFieldAutoSize.LEFT;
> label.text = "String I want to render";
> 
> // Draw the text into a bitmap.
> var bm:BitmapData = new BitmapData(label.width, label.height);
> bm.draw(label);
> 
> // Draw bitmap on the graphics of the component.
> comp.graphics.beginBitmapFill(bm, null, false);
> comp.graphics.drawRect(0, 0, bm.width, bm.height);
> comp.graphics.endFill();
> 
> Any ideas?
> 
> Thanks,
> Derek
>

 

Reply via email to