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>

 

 

posted @ 2010-06-11 13:54  陈同学  阅读(445)  评论(0)    收藏  举报