Flex中自定义事件
事件是一个非常有用的功能,通常用于信息传递交互大大提高程序编写的灵活性。在高级语言中都会集成这方面特性;Flex也不例外几乎所有控件中都集成了大量的事件,如果Button的Click事件等。但实际应用中控件自有的事件是不能满真实需要的,特别在自己编写自定义控件时,自定义控件内部信息的改变如何及时通知所在的容器变得很更要;这个时候自定义事件就起到它的作用。
在Flex中定义事件有两中情况,分别是ActionScript和MXML中定义。
在ActionScript中定义:
[Event(name="myEnableEvent",)]
public class MyComponent extends UIComponent
{
...
}
在MXML中定义:
<mx:Metadata>
//声明事件名称,显示给调用者,如果为自定义事件类要修改flash.events.Event
[Event(name="DataChange",type="flash.events.Event")]
//自定义事件类,优点:可以添加一些方法和属性,传到外面
[Event(name="clickCustom",type="UserComponent.CustomEvent")]
</mx:Metadata>
B.mxml
要做两件事:
1.声明事件名称,显示给调用者(以上两种方法),只是声明没意义。
2.执行事件
protected function button1_clickHandler(event:MouseEvent):void
{
//将事件注册到事件流中,并执行
//btnClick为事件名称,要跟声明的那个一样
var eve:Event=new Event("btnClick");
this.dispatchEvent(eve);
}
A.mxml 引用了B.mxml
外部给声明的事件赋值:
//系统自定义事件
protected function evendemo11_btnClickHandler(event:Event):void
{
trace("我是外部的事件!");
}
//自定义类事件
protected function evendemo11_clickCustomHandler(event:CustomEvent):void
{
//event:CustomEvent 参数类型是事件类对象
trace("我是外部的事件!");
}
<UserComponent:EvenDemo1 x="294" y="152" btnClick="evendemo11_btnClickHandler(event)" clickCustom="evendemo11_clickCustomHandler(event)">
</UserComponent:EvenDemo1>
浙公网安备 33010602011771号