In theory, if you started with UIComponent, you need to implement a
measure() method to tell the parent how big you want to be.  That parent
will then call setActualSize which should result in your
updateDisplayList being called with non-zero values.  Again, if
extending UIComponent, you should be able to draw or add shapes in
updateDisplayList without causing a second call to updateDisplayList
providing that your measure() method returns the same values and nobody
else called invalidateDisplayList.
 
It feels like you're not quite following the formula somehwere.  You
could post the class code I suppose...

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Nate Pearson
Sent: Tuesday, March 27, 2007 4:37 PM
To: [email protected]
Subject: [flexcoders] Re: Custom Component Width when 100%?



Ahhh HA! I was reading the adobe documentation and it turns out that
when you do addchild() it calls updateDisplayList again. This is why
my program wasn't working, I had an infinite loop when I called
addchild.

I fixed it by adding an if function with a flag.
if (_newBackground){
...
}

Since my updatedisplaylist was being called twice, once with 0
unscaledWidth and once with an unscaledWidth, I had to add another
condition.
if (_newBackground && unscaledWidth != 0) {
...
}

Now I can't seem to get the component to scale with the rest of the
app when the browser window opens. I'm going to start a new thread
for that question.

-Nate

--- In [email protected] <mailto:flexcoders%40yahoogroups.com>
, "Nate Pearson" <[EMAIL PROTECTED]> wrote:
>
> So I think i got unScaledWidth to work during UpdateDisplayList. When
> I debug it seems like it's called twice. Once with 0 unscaledWidth
> and once with the correct unScaledWidth. Should I be worrying about
> this? I didn't override the measure function. Should I?
> 
> So to draw in UpdateDisplayList you have to manipulate graphics like
this:
> graphics.lineStyle(0,0x000000, 0);
> graphics.beginFill(0xffffff, 1);
> graphics.drawRect(0,0,unscaledWidth/2,unscaledHeight);
> graphics.endFill(); 
> 
> But what if I want to draw shapes or UIcomponents? That's why It
> wasn't working for me before, i was drawing like this:
> var shape:Shape = new Shape();
> shape.graphics.lineStyle(0,0x000000, 0);
> shape.graphics.beginFill(0xffffff, 1);
> shape.graphics.drawRect(0,0,unscaledWidth/2,unscaledHeight);
> shape.graphics.endFill();
> //When i do the add child my program won't load!
> //addChild(shape);
> 
> I watched Ely's component video and it says I can add UIComponents,
> sprites and shapes to UpdateDisplayList. Does anyone know what I'm
> doing wrong?
> 
> Thanks!
> 
> -Nate
> 
> 
> --- In [email protected]
<mailto:flexcoders%40yahoogroups.com> , "Alex Harui" <aharui@> wrote:
> >
> > You can always call validateNow() to force validation, but you
shouldn't
> > be drawing in commitProperties in most cases. Most drawing should
be in
> > updateDisplayList
> > 
> > ________________________________
> > 
> > From: [email protected]
<mailto:flexcoders%40yahoogroups.com> 
[mailto:[email protected] <mailto:flexcoders%40yahoogroups.com>
] On
> > Behalf Of Nate Pearson
> > Sent: Monday, March 26, 2007 3:53 PM
> > To: [email protected] <mailto:flexcoders%40yahoogroups.com>

> > Subject: [flexcoders] Re: Custom Component Width when 100%?
> > 
> > 
> > 
> > I can't seem to get the width/height at measure() or
> > updateDisplayList(). Is there a specific function I have to call?
> > 
> > Isn't there a way to get the height/width before measure? I'm
drawing
> > during commit properties so I would like to get it then. 
> > 
> > Thanks for your reply.
> > 
> > --- In [email protected]
<mailto:flexcoders%40yahoogroups.com> 
<mailto:flexcoders%40yahoogroups.com>
> > , "Alex Harui" <aharui@> wrote:
> > >
> > > It depends on when you ask. Components have a multi-stage
validation
> > > mechanism. Their properties get set in stage1, measured in stage2,
> > > layed out in stage 3. Until measurement, they are zero
width/height
> > > 
> > > ________________________________
> > > 
> > > From: [email protected]
<mailto:flexcoders%40yahoogroups.com> 
<mailto:flexcoders%40yahoogroups.com>
> > [mailto:[email protected]
<mailto:flexcoders%40yahoogroups.com> 
<mailto:flexcoders%40yahoogroups.com>
> > ] On
> > > Behalf Of Nate Pearson
> > > Sent: Monday, March 26, 2007 1:09 PM
> > > To: [email protected]
<mailto:flexcoders%40yahoogroups.com> 
<mailto:flexcoders%40yahoogroups.com> 
> > > Subject: [flexcoders] Custom Component Width when 100%?
> > > 
> > > 
> > > 
> > > I created a custom component that works great when the width is
> > > specified. However, when I try to set the width to a percent (of
the
> > > parent) it returns 0. How to I reference the parent's width? I
tried
> > > getExplicitOrMeasuredWidth but it didn't work.
> > > 
> > > Thanks in advance for the help.
> > >
> >
>



 

Reply via email to