NewClass源码摘要:本文记录了Flex中给控件和类加入自定义事件的步骤。
正文:虽然网上已经有很多类似的资料了, 不过还是想自己写一篇,作为存档。
(一)给类A加入自定义事件FavPathDelEvt,Appliaction调用A,并响应A的事件
(1)写一个自定义事件as类,类中附带参数Index。
packageNewClass
{
importflash.events.Event;
publicclassFavPathDelEvtextendsflash.events.Event
{
privatevar_index:int;
publicfunctionsetIndex(index:int):void
{
_index=index;
}
publicfunctiongetIndex():int
{
return_index;
}
publicfunctionFavPathDelEvt(type:String,index:int)
{
Index=index;
super(type);
}
}
}
(2)在需要触发这个事件的类(也就是A类)中加上[Event...]的申明,并且写上触发函数。
packageNewClass
{
importNewClass.FavPathDelEvt;
importmx.core.Container;
importflash.utils.setTimeout;
[Event(name="onDelPath",type="NewClass.FavPathDelEvt")]
publicclassAextendsContainer
{
publicfunctionA()
{
flash.utils.setTimeout(function():void{//这里设置了一个延时函数,类初始化2000ms后触发事件
DispatchEventofA();
},2000,null);
}
privatefunctionDispatchEventofA():void
{
this.dispatchEvent(newNewClass.FavPathDelEvt("onDelPath",1));
}
}
}
(3) 最后,在Application所在的mxml中,加上事件处理函数,并将该函数和A的事件绑定。
<?xmlversion="1.0"encoding="utf-8"?>
<mx:Applicationxmlns:mx="//mxml"layout="absolute"minWidth="500"minHeight="350"creationComplete="Init()">
<mx:Script>
<![CDATA[
importNewClass.A;
importmx.controls.Alert;
privatefunctionInit():void
{
vara:A=newA();
a.addEventListener("onDelPath",FavPathDelEvt_Handler);//将A的事件和Application中的函数绑定
}
privatefunctionFavPathDelEvt_Handler(evt:FavPathDelEvt):void
{
Alert.show("FavPathDelEvtofAiscalled,Indexis"+evt.Index);
}
]]>
</mx:Script>
</mx:Application>
运行程序后,2秒后会出现调用事件的提示对话框。
(二)给自定义组件mxml加入自定义事件
给组件加入自定义事件基本和(一)一致。区别在于,mxml中可以通过加入
<mx:Metadata>
[Event(name="onDelPath",type="NewClass.FavPathDelEvt")]
</mx:Metadata>
来完成和A中[Event((name="onDelPath",type="NewClass.FavPathDelEvt")] 相同的功能
--------------------------------
源码下载链接:NewClass.rar
---------------------------------
转载请注明出处,au revoir!