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