转载自:http://developer.51cto.com/art/201008/218947.htm
本文向大家介绍一下Flex自定义事件的概念,在Flex中Flex自定义事件有两中情况,分别是ActionScript和MXML中定义。
AD:
本文和大家重点讨论一下Flex自定义事件的用法,事件是一个非常有用的功能,通常用于信息传递交互大大提高程序编写的灵活性。
Flex自定义事件
事件是一个非常有用的功能,通常用于信息传递交互大大提高程序编写的灵活性。在高级语言中都会集成这方面特性;Flex也不例外几乎所有控件中都集成了大量的事件,如果Button的Click事件等。但实际应用中控件自有的事件是不能满真实需要的,特别在自己编写自定义控件时,自定义控件内部信息的改变如何及时通知所在的容器变得很更要;这个时候Flex自定义事件就起到它的作用。
在Flex中Flex自定义事件有两种情况,分别是ActionScript和MXML中定义。
在ActionScript中定义:
- [Event(name="myEnableEvent",type="flash.events.Event")] ?
- ?
- publicclassMyComponentextendsUIComponent ?
- ?
- { ?
- ?
- ... ?
- ?
- } ?
- ?
Flex自定义事件在MXML中定义:
- <mx:Metadata>?
- ?
-
[Event(name="DataChange",type="DataChangeEvent")] ?
- ?
-
</mx:Metadata>?
- ?
DataChangeEvent事件参数的定义:
- importflash.events.Event; ?
- ?
- publicclassDataChangeEventextendsflash.events.Event ?
- ?
- { ?
- publicfunctionDataChangeEvent() ?
- ?
- { ?
- super("DataChange"); ?
- } ?
- ?
- publicvarData:Object; ?
- } ?
- ?
- ?
在Flex自定义控件中定义和触发事件:?
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>?
- ?
-
<mx:Formxmlns:mxmx:Formxmlns:mx="http://www.adobe.com/2006/mxml"width="212"height="56">?
- ?
-
<mx:Metadata>?
- ?
-
[Event(name="DataChange",type="DataChangeEvent")] ?
- ?
-
</mx:Metadata>?
- ?
-
<mx:Buttonlabelmx:Buttonlabel="Button"click="Change()"/>?
- ?
-
<mx:Script>?
- ?
-
<![CDATA[ ?
- ?
- functionChange():void ?
- ?
- { ?
- ?
- this.dispatchEvent(newDataChangeEvent()); ?
- ?
- } ?
- ?
- ]]>?
- ?
-
</mx:Script>?
- ?
-
</mx:Form>?
- ?
容器接收相关Flex自定义控件事件:
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"xmlns:ns1="*">?
- ?
-
<ns1:EmployeeComboxns1:EmployeeCombox="146"y="132"DataChange="onChange(event)">?
- ?
-
</ns1:EmployeeCombo>?
- ?
-
<mx:Script>?
- ?
-
<![CDATA[ ?
- ?
- importmx.controls.Alert; ?
- ?
- functiononChange(e:DataChangeEvent) ?
- ?
- { ?
- ?
- } ?
- ?
- ]]>?
- ?
-
</mx:Script>?
- ?
-
</mx:Application>?
- ?
其实Flex自定义事件的现实也很简单,但起着非常重要的作用;正是因为有了事件的机制,使得大部分重复的功能抽取到自定义控件中,从而达到一个很高的代码重用性。