flex事件的处理方法默认都带有一个参数,就是Event,如果我们在添加监听或者其它事件处理方法中想传递自己定义的参数时,应该怎么处理?
下面给大家举一个很简单的例子,
<?xml version="1.0" encoding="utf-8"?>
<s:Application minHeight="600"
minWidth="955"
creationComplete="application1_creationCompleteHandler(event)"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.Button;
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
for (var i:int = 0; i < 5; i++)
{
var b:Button = new Button();
b.label = 'button' + i;
b.addEventListener(MouseEvent.CLICK, [color=red]ffHandler('' + i)[/color]);
addElement(b);
}
}
private function ffHandler(string:String):Function
{
[color=red]return function(e:MouseEvent):void
{
clickHandler.apply(null, [e, string])
};[/color] }
private function clickHandler(e:Event, ... args):void
{
tt.text = args[0].toString();
}
]]>
</fx:Script>
<s:Label id="tt"/>
</s:Application>
下面给大家举一个很简单的例子,
<?xml version="1.0" encoding="utf-8"?>
<s:Application minHeight="600"
minWidth="955"
creationComplete="application1_creationCompleteHandler(event)"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.Button;
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
for (var i:int = 0; i < 5; i++)
{
var b:Button = new Button();
b.label = 'button' + i;
b.addEventListener(MouseEvent.CLICK, [color=red]ffHandler('' + i)[/color]);
addElement(b);
}
}
private function ffHandler(string:String):Function
{
[color=red]return function(e:MouseEvent):void
{
clickHandler.apply(null, [e, string])
};[/color] }
private function clickHandler(e:Event, ... args):void
{
tt.text = args[0].toString();
}
]]>
</fx:Script>
<s:Label id="tt"/>
</s:Application>