FLEX中给组件添加自定义事件

FLEX 系统提供的事件与DOM的事件基本上完全一致 但是和传统的WEB开发不同的是  可以为自定义的组件添加自定义的事件    比如我们做了一个组件是一个登录框   当点击登录按钮的时候触发我们自定义的事件 比如叫"login"事件  虽然这个login事件 归根结底还是某个按钮的click事件 但自定义的事件比传统的事件有什么好处呢 :一是事件的名字是自定义的 可以形象的表示这个事件本身 而不像以前还要关心是哪个按钮按了一下等等  这样为组件与组件的通讯提供便利   下面的例子中自定义了一个组件叫testComponent , 这个自定义的组件中有一个按钮和一个输入框, 当按下这个按钮的时候   新建一个新的事件叫shareData
并且shareData事件被声明为一个textEvent ,  textEvent可以通过text属性来传递数据(textInput控件的值) 。

EventTest.mxml中引用了这个自定义组件testComponent 并捕获testComponent中的自定义事件shareData, 输出testComponent 中textInput控件的字符串
 
testComponent.mxml :(我们创建到:/src/view 文件夹下)
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" height="300">
  3. <!-- 声明本组件将抛出的事件 -->
  4. <mx:Metadata>
  5.  [Event(name="shareData",type="flash.events.TextEvent")]
  6. <!-- 这里的 shareData相当于 click,将来的:event:TextEvent相当于e:MouseEvent -->
  7. </mx:Metadata>
  8. <mx:Script>
  9.  <![CDATA[
  10.   private function fnOnClick_testComp():void {
  11.    //event1 构造函数 至少传递一个事件名,名字随便起
  12.    var event1:TextEvent = new TextEvent("shareData");
  13.    event1.text = myTxtInput.text;
  14.    //使用disptchEvent 来抛出创建的事件
  15.    dispatchEvent(event1);
  16.   }
  17.  ]]>
  18. </mx:Script>
  19. <mx:Label text="This is the Test component" />
  20.  <mx:TextInput id="myTxtInput"/>
  21.  <!-- 当点击按钮时进行自定义事件 -->
  22.  <mx:Button label="clickMe" click="fnOnClick_testComp()" />
  23. </mx:VBox>

eventTest.mxml :

 

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
  3.  xmlns:view="view.*">
  4.  <mx:Script>
  5.   <![CDATA[
  6.    import mx.controls.Alert;
  7.    private function fnOnShareData(event:TextEvent):void {
  8.     Alert.show("event has been use. event.text => " + event.text );
  9.    }
  10.   ]]>
  11.  </mx:Script>
  12.  <!-- 调用我们自定义的组件  并处理它的shareData事件  就像click事件一样使用 -->
  13.  <view:testComponent shareData="fnOnShareData(event)"/>
  14. </mx:Application>

 

另外,下面这篇文章也很酷:

http://www.cnblogs.com/xxcainiao/archive/2008/03/08/1096815.html

从零开始编写一个flex组件。FLEX自定义控件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值