Hey guys,
so I have created a simple flex proj
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" themeColor="#0EFF02">
<mx:Script>
<![CDATA[
private function onOver(evt:Event):void{
trace("onOver : " +evt.currentTarget );
test.setStyle("backgroundColor",0xff00ff);
}
private function onOut(evt:Event):void{
trace("onOut : " +evt.currentTarget );
test.setStyle("backgroundColor",0xffff00);
}
]]>
</mx:Script>
<mx:Canvas id="test" x="118" y="136" width="443" height="133"
themeColor="#099FFF" backgroundColor="#D70000" rollOver="onOver(event);"
rollOut="onOut(event);">
<mx:Button x="39" y="35" label="Button"/>
</mx:Canvas>
</mx:Application>
So basically all the code above does is changes the backgroundColor of
the Canvas. It works fine
Now if I make a MXML Component using the Code Behind Method
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" themeColor="#0EFF02" xmlns:ns1="item.*">
<ns1:ListItem x="80" y="48"/>
</mx:Application>
ListItem.mxml
<item:CListItem xmlns:mx="http://www.adobe.com/2006/mxml" width="400"
height="300" xmlns:item="item.*">
<mx:Button x="65" y="61" label="Button"/>
</item:CListItem>
CListItem.as
package item
{
import flash.events.MouseEvent;
import mx.containers.Canvas;
import mx.events.FlexEvent;
public class CListItem extends Canvas
{
public function CListItem()
{
super();
this.addEventListener(FlexEvent.CREATION_COMPLETE, onComponentLoaded);
}
private function onMouseOver(evt:MouseEvent):void{
trace("CListItem.onMouseOver :");
this.setStyle("backgroundColor",0xff00ff);
}
private function onMouseOut(evt:MouseEvent):void{
trace("CListItem.onMouseOut");
this.setStyle("backgroundColor",0xffff00);
}
private function onComponentLoaded(evt:FlexEvent):void{
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
}
}
Now when I mouse over the Button component the onMouseOut function gets
called and there is a flicker in the backgroundColor.
If I dont use the Code Behind Method then the onMouseOut function does
not get called when I rollOver the button.
Can anyone explain this strange behavior?
Thanks
Cheers
Firdosh