Hi All
I've run into a small problem I was wondering it any of you have run into.
I'm overriding some state style in my mxml document depending on when what
kind of data I'm receiving. here's the function:
protected function decideColour(event:FlexEvent, money:Money):void
{
if(money.debitOrCredit == "credit")
{
// do nothing
} else
{
// just setting it with normal setstlyle also because otherwise doesn't
redraw the itemrenderer and none of the invalidate functions seem to work
event.target.setStyle("color", colours.debtColour);
setStyleForState(event.target, "color", "normal", colours.debtColour);
setStyleForState(event.target, "color", "hovered",
colours.debtHoverColour);
setStyleForState(event.target, "color", "selected",
colours.debtSelectedColour);
}
}
private function setStyleForState(object:Object, style:String, state:String,
value:Object):void {
var editedState:State;
for each(var s:State in this.states) {
if(s.name == state) {
editedState = s;
break;
}
}
editedState.overrides = [ new SetStyle( object as IStyleClient, style,
value) ];
}
This works fun but the problem is that as soon as I do this none of my other
state related events trigger anymore. For instance I have this code here
which works fine before I use the setStyleForState fucntion.
<s:Rect top="0" left="0" right="0" bottom="0" >
<s:fill>
<s:LinearGradient>
<s:GradientEntry color="0x636463"
alpha.normal="0"
alpha.hovered="0.1"
alpha.selected="0.25"
/>
<s:GradientEntry color="0x636463"
alpha.normal="0"
alpha.selected=".25"
alpha.hovered=".25"
/>
<s:GradientEntry color="0x636463"
alpha.normal="0"
alpha.hovered="0.1"
alpha.selected="0.25"
/>
</s:LinearGradient>
</s:fill>
</s:Rect>
I've managed to work around it manually by firing the stateChangeComplete
event and then making two seperate rectangles visible/invisible but it would
still be interesting to know why this is happening.
Anyone run into this before?