精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-05
最后修改:2009-02-05
事件是一个非常有用的功能,通常用于信息传递交互大大提高程序编写的灵活性。在高级语言中都会集成这方面特性;Flex也不例外几乎所有控件中都集成了大量的事件,如果Button的Click事件等。但实际应用中控件自有的事件是不能满真实需要的,特别在自己编写自定义控件时,自定义控件内部信息的改变如何及时通知所在的容器变得很更要;这个时候自定义事件就起到它的作用。
在Flex中定义事件有两中情况,分别是ActionScript和MXML中定义。 在ActionScript中定义: [Event(name="myEnableEvent", type="flash.events.Event")] public class MyComponent extends UIComponent { ... } 在MXML中定义: <mx:Metadata> [Event(name="DataChange", type="DataChangeEvent")] </mx:Metadata> DataChangeEvent事件参数的定义: import flash.events.Event; public class DataChangeEvent extends flash.events.Event { public function DataChangeEvent() { super("DataChange"); } public var Data:Object; } 在自定义控件中定义和触发事件: <?xml version="1.0" encoding="utf-8"?> <mx:Form xmlns:mx="http://www.adobe.com/2006/mxml" width="212" height="56"> <mx:Metadata> [Event(name="DataChange", type="DataChangeEvent")] </mx:Metadata> <mx:Button label="Button" click="Change()"/> <mx:Script> <![CDATA[ function Change():void { this.dispatchEvent(new DataChangeEvent()); } ]]> </mx:Script> </mx:Form> 容器接收相关自定义控件事件: <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*"> <ns1:EmployeeCombo x="146" y="132" DataChange="onChange(event)" > </ns1:EmployeeCombo> <mx:Script> <![CDATA[ import mx.controls.Alert; function onChange(e:DataChangeEvent) { } ]]> </mx:Script> </mx:Application> 其实自定义事件的现实也很简单,但起着非常重要的作用;正是因为有了事件的机制,使得大部分重复的功能抽取到自定义控件中,从而达到一个很高的代码重用性。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 5094 次