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