I agree, styles are better for styles. Again, just answering some ones
question. What I have learned in flex is, there a re a lot of ways to climb
the mountain.

Ok, because I'm a big loser and I don't like using mx_internal... sorry
that I'm so lame Mike

Thats a joke right? I don't like it either unless it gets me somewhere.

if(this.parent!= null && this.parent is UIComponent) {
   if((this.parent as UIComponent).getStyle("arrowColor")) {
    _color = (this.parent as
    UIComponent).getStyle("arrowColor");
  }
}

You could replace that block with;

       var color:uint;
       if (parent is IStyleClient)
          color = IStyleClient(parent).getStyle("arrowColor");
       if (!isNaN(color))
          _color = color;



Peace, Mike


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

  Ok, because I'm a big loser and I don't like using mx_internal... sorry
that I'm so lame Mike... but here is a modified version that doesn't
use mx_internal.

Basically three things change from Mikes example.

private function changeIcon(event:MouseEvent):void {
myPanel.setStyle("arrowColor", 0xff0000);
}

I set a style rather than a property on an object we can't safely access.

on the Icon class I add this metadata
[Style(name="arrowColor",type="uint",format="Color",inherit="yes")]

and updateDisplayList becomes this

override protected function
updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(this.parent!= null && this.parent is UIComponent) {
if((this.parent as UIComponent).getStyle("arrowColor")) {
_color = (this.parent as
UIComponent).getStyle("arrowColor");
}
}
graphics.clear();
graphics.beginFill(_color, 1);
graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
graphics.endFill();
}

Might be possible to improve the logic in the part where it gets the
style.

Paul


Michael Schmalle wrote:
> Ok, I got it;
>
> MXML APP
> ----------------------------------------------------------
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application
> xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="absolute">
>
>
> <mx:Script>
> <![CDATA[
>
> import mx.core.mx_internal;
> use namespace mx_internal;
>
> private function changeIcon(event:MouseEvent):void
> {
> myPanel.titleIconObject.color = 0xFFCC00;
> }
>
> ]]>
> </mx:Script>
>
> <mx:Panel id="myPanel"
> titleIcon="{Icon}"
> title="Icon Panel">
>
> <mx:List/>
>
> <mx:Button
> label="Change"
> click="changeIcon(event)"/>
>
> </mx:Panel>
>
> </mx:Application>
>
>
> Icon Class
> ----------------------------------------------------------
>
> package
> {
>
> import mx.skins.ProgrammaticSkin;
>
> public class Icon extends ProgrammaticSkin
> {
> private var _color:uint = 0xFF0000;
>
> public function get color():uint
> {
> return _color;
> }
> public function set color(value:uint):void
> {
> _color = value;
> validateDisplayList();
> }
>
> public function Icon()
> {
> super();
> }
>
> 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.clear();
> graphics.beginFill(_color, 1);
> graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
> graphics.endFill();
> }
> }
> }
>
>
> Peace, Mike
>




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