FLEX 系统提供的事件与DOM的事件基本上完全一致 但是和传统的WEB开发不同的是 可以为自定义的组件添加自定义的事件 比如我们做了一个组件是一个登录框 当点击登录按钮的时候触发我们自定义的事件 比如叫"login"事件 虽然这个login事件 归根结底还是某个按钮的click事件 但自定义的事件比传统的事件有什么好处呢 :一是事件的名字是自定义的 可以形象的表示这个事件本身 而不像以前还要关心是哪个按钮按了一下等等 这样为组件与组件的通讯提供便利 下面的例子中自定义了一个组件叫testComponent , 这个自定义的组件中有一个按钮和一个输入框, 当按下这个按钮的时候 新建一个新的事件叫shareData
并且shareData事件被声明为一个textEvent , textEvent可以通过text属性来传递数据(textInput控件的值) 。
EventTest.mxml中引用了这个自定义组件testComponent 并捕获testComponent中的自定义事件shareData, 输出testComponent 中textInput控件的字符串
testComponent.mxml :(我们创建到:/src/view 文件夹下)
- <?xml version="1.0" encoding="utf-8"?>
- <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" height="300">
- <!-- 声明本组件将抛出的事件 -->
- <mx:Metadata>
- [Event(name="shareData",type="flash.events.TextEvent")]
- <!-- 这里的 shareData相当于 click,将来的:event:TextEvent相当于e:MouseEvent -->
- </mx:Metadata>
- <mx:Script>
- <![CDATA[
- private function fnOnClick_testComp():void {
- //event1 构造函数 至少传递一个事件名,名字随便起
- var event1:TextEvent = new TextEvent("shareData");
- event1.text = myTxtInput.text;
- //使用disptchEvent 来抛出创建的事件
- dispatchEvent(event1);
- }
- ]]>
- </mx:Script>
- <mx:Label text="This is the Test component" />
- <mx:TextInput id="myTxtInput"/>
- <!-- 当点击按钮时进行自定义事件 -->
- <mx:Button label="clickMe" click="fnOnClick_testComp()" />
- </mx:VBox>
eventTest.mxml :
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
- xmlns:view="view.*">
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- private function fnOnShareData(event:TextEvent):void {
- Alert.show("event has been use. event.text => " + event.text );
- }
- ]]>
- </mx:Script>
- <!-- 调用我们自定义的组件 并处理它的shareData事件 就像click事件一样使用 -->
- <view:testComponent shareData="fnOnShareData(event)"/>
- </mx:Application>
另外,下面这篇文章也很酷:
http://www.cnblogs.com/xxcainiao/archive/2008/03/08/1096815.html
从零开始编写一个flex组件。FLEX自定义控件。

2611

被折叠的 条评论
为什么被折叠?



