In my measure function I have:
override protected function measure():void{
measuredWidth = getExplicitOrMeasuredWidth()
measuredHeight = getExplicitOrMeasuredHeight()
}
That makes them both zero though. although my updateDisplayList gets
called twice my measure function is only called once. How should I be
setting my measure function? If we get this worked out I think I'll
be good to go, if not ill post the code. Thanks so much for your help
Alex.
--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> 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" <napearson99@> 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.
> > > >
> > >
> >
>