Ah,

I know why you are not seeing updateDisplayList() called.

Since this is ProgrammaticSkin, if the size doesn't change, the method will
skip. The layoutManager calls setActualSize() and in that call if height or
width did not change, you won't get the call.

I had this same problem.

In your color property, call validateDisplayList(); that will do the trick.

Peace, Mike



On 4/27/07, Michael Schmalle <[EMAIL PROTECTED]> wrote:

Hi,

For one I see you are missing;

graphics.clear();

Try that, I don't think you are erasing the old color.

Peace, Mike

PS hehe I was thinking about something else when I responded and forgot
the internal icon is typed IFlexDisplayObject.



On 4/27/07, Paul Whitelock <[EMAIL PROTECTED]> wrote:
>
>   Well here's the deal. I've created an simple icon class that draws a
> red square like this:
>
> package components {
>
> import mx.skins.ProgrammaticSkin;
>
> public class Icon extends ProgrammaticSkin {
>
> private var iconColor:uint = 0xFF0000;
>
> public function Icon() {
> super();
> }
>
> public function set color(value:uint):void {
> iconColor = value;
> invalidateDisplayList();
> }
>
> override public function get measuredHeight():Number {
> return 16;
> }
>
> override public function get measuredWidth():Number {
> return 16;
> }
>
> override protected function
> updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
> super.updateDisplayList(unscaledWidth, unscaledHeight);
> graphics.beginFill(iconColor, 1);
> graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
> graphics.endFill();
> }
> }
> }
>
> I can place this icon in a Panel like this:
>
> <mx:Panel id="myPanel" titleIcon="{Icon}" ... >
>
> So far so good -- the red square is drawn in the top left corner of
> the title area and it appears that I can call the color setter
> function like this:
>
> myPanel.titleIcon.color = 0x00FF00;
>
> But when I do this the icon color never changes. It appears that the
> calling invalidateDisplayList() never results in a call to
> updateDisplayList().
>
> Any ideas?
>
> Paul
>
>
> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Paul J
> DeCoursey <[EMAIL PROTECTED]> wrote:
> >
> > I've been able to get it to work for buttons and the like by extending
>
> > ProgrammaticSkin and passing in the class. I've never even used the
> > icon on a TitleWindow to even know how it's supposed to work. It
> should
> > work, because everything is a class, but it might not know what to do
> > with it.
> >
> > Paul
> >
> > Michael Schmalle wrote:
> > > Hi,
> > >
> > > The simple answer is no.
> > >
> > > Why?
> > >
> > > The titleIcon class is of type Class. This class cannot be
> subclassed.
> > >
> > > My advice to you is create a subclass of TitleWindow and create the
> > > method
> > > you are talking about there.
> > >
> > > Since you cannot load icons at runtime, you could create a simple
> > > iconLibraryModule that held your extra icons and then the method you
>
> > > created
> > > in the subclass would then load the icons from the icon library on
> demand
> > > through some type of string call into the library.
> > >
> > > Conclusion, there is no way to create an image like component in
> > > components
> > > with properties of type Class. In my custom window, I wrap the
> icon in a
> > > UIComponent, this way when I am rendering the icon, I have 2
> options. The
> > > icon property is the 'source' but not the actual instance that is
> > > manipulated in the component UI.
> > >
> > > Peace, Mike
> > >
> > > On 4/27/07, Paul Whitelock <[EMAIL PROTECTED]> wrote:
> > >>
> > >> Would anyone know if there is a way to create an component that
> can be
> > >> used as an icon for any component that accepts an icon?
> > >>
> > >> For example, TitleWindow accepts a titleIcon. I would like to
> create
> > >> an AS3 class that I can instantiate and specify for the
> TitleWindow's
> > >> titleIcon. As conditions change in the window, I'd like to be able
> to
> > >> make a function call to the icon class and have it update the icon
> > >> displayed by the TitleWindow. The class would programatically
> create
> > >> the icon (i.e., it would not use an embedded asset).
> > >>
> > >> Ideally the icon component should be able to be used for any
> component
> > >> that accepts an icon.
> > >>
> > >> Any idea if this can be done and if so where I should start
> looking to
> > >> create such a component? Thanks!
> > >>
> > >> Paul
> > >>
> > >>
> > >>
> > >
> > >
> > >
> >
>
> >



--
Teoti Graphix
http://www.teotigraphix.com

Blog - Flex2Components
http://www.flex2components.com

You can find more by solving the problem then by 'asking the question'.




--
Teoti Graphix
http://www.teotigraphix.com

Blog - Flex2Components
http://www.flex2components.com

You can find more by solving the problem then by 'asking the question'.

Reply via email to