HAHA,

Man, it must be Friday.

Ok, the problem is this;

titleIcon is the setter for the reference to the class that is creating the
icon.

You need the actual reference to the icon instance.

try this;

import mx.core.mx_internal;
use namespace mx_internal;

myPanel::mx_internal.titleIconObject.color = 0x00FF00;

BTW we all know mx_internal is not supported but it will get you what you
want. :)

Peace, Mike


On 4/27/07, Paul Whitelock <[EMAIL PROTECTED]> wrote:

  Unfortunately that did not work. It looks like the setter is not
really being called after all. When I do this:

myPanel.titleIcon.color = 0x00FF00;

What seems to be happening is that it is creating a property called
"color" just as if myPanel.titleIcon was a generic Object.

I tried creating a "doIconColor" function (rather than using a setter)
in Icon and calling it like this:

Icon(myPanel.titleIcon).doIconColor(0xFF00FF);

But this results in an TypeError:

TypeError: Error #1034: Type Coercion failed: cannot convert
components::Icon$ to components.Icon.

I can't simply do this:

myPanel.titleIcon.doIconColor(0xFF00FF);

because I get a compile error (call to a possibly undefined method
doIconColor)

So the question now becomes, how do I call a function of my Icon
class? Thanks for any suggestions!

Paul

--- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, "Michael
Schmalle"
<[EMAIL PROTECTED]> wrote:
>
> 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>
<flexcoders%40yahoogroups.com>, Paul J
> > > DeCoursey <paul@> 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 <news@> 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'.
>




--
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