FLEX自定义事件
有时候我们需要让两个组件之间实现联动,并且在其中传递数据,自定义事件机制可以帮助我们比较优雅的实现这种需要.
下面的例子,是打算实现一个列表和一个编辑框的联动.
编辑框代码
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" creationComplete="init()">
- <mx:Script>
- <![CDATA[
- import my.DummySelectEvent;
- import mx.controls.Alert;
- private function init():void
- {
- DummySelectEvent.dispatcher.addEventListener(DummySelectEvent.SELECTED_DATA_CHANGE,dataChangeListener);
- }
- private function dataChangeListener(event:DummySelectEvent):void
- {
- var data = event.data;
- //Alert.show(event.data.name);
- detailPanel.changeMode(Detail.EDIT_SIMPLE,data);
- }
- ]]>
- </mx:Script>
- <mx:HBox x="104" y="126" width="1000">
- <ns1:List>
- </ns1:List>
- <ns1:Detail id="detailPanel" x="104" y="135" widthInit="0" widthAdvanced="600">
- </ns1:Detail>
- </mx:HBox>
- </mx:Application>
列表代码
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="300" xmlns:my="my.*" creationComplete="initList()" xmlns:local="*">
- <mx:Script>
- <![CDATA[
- import my.DummySelectEvent;
- import mx.events.FlexEvent;
- import my.Dummy;
- import mx.collections.ArrayCollection;
- import mx.controls.Alert;
- private var dummyList:ArrayCollection;
- private var itemSelected:Boolean = false;
- private function initList():void{
- dummyList = new ArrayCollection();
- for( var i:Number = 0;i<10;i++)
- {
- var dummy:Dummy = new Dummy();
- dummy.name = "name"+i;
- dummy.email = "email"+i;
- dummy.mobile = "mobile" +i;
- dummy.address = "address"+i;
- dummy.qq = "qq"+i;
- dummy.msn = "msn"+i;
- dummyList.addItem(dummy);
- }
- dataGrid.dataProvider = dummyList;
- }
- private function itemSelect():void
- {
- var dataChangeEvent:DummySelectEvent = new DummySelectEvent(dataGrid.selectedItem,DummySelectEvent.SELECTED_DATA_CHANGE);
- DummySelectEvent.dispatcher.dispatchEvent(dataChangeEvent);
- }
- private function deleteItem():void{
- Alert.show("确定要删除?");
- }
- ]]>
- </mx:Script>
- <!--<mx:Label id="selectedItem" visible="false" data = "{dataGrid.selectedItem}" dataChange="itemSelect()"/>-->
- <mx:Spacer height="2">
- </mx:Spacer>
- <local:ListBar>
- </local:ListBar>
- <mx:DataGrid id="dataGrid"
- x="0" y="0" width="100%" height="100%"
- data="{dataGrid.selectedItem}"
- dataChange="itemSelect()" >
- <mx:columns>
- <mx:DataGridColumn headerText="name" dataField="name"/>
- <mx:DataGridColumn headerText="email" dataField="email"/>
- <mx:DataGridColumn headerText="mobile" dataField="mobile"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:HBox width="100%">
- <mx:Button label="删除选中" enabled="{itemSelected}" click="deleteItem()"/>
- </mx:HBox>
- </mx:Panel>
DummyVO代码
- package my
- {
- [Bindable]
- public class Dummy
- {
- public function Dummy()
- {
- }
- public var name:String;
- public var mobile:String;
- public var email:String;
- public var qq:String;
- public var msn:String;
- public var address:String;
- }
- }
自定义事件代码
- package my
- {
- import flash.events.Event;
- import flash.events.EventDispatcher;
- public class DummySelectEvent extends Event
- {
- public var data:Object;
- public static var SELECTED_DATA_CHANGE:String = "selectedDataChange";
- public static const dispatcher:EventDispatcher=new EventDispatcher();
- public function DummySelectEvent(data:Object,type:String)
- {
- super(type,true,false);
- this.data = data;
- }
- override public function clone():Event
- {
- return new DummySelectEvent(data,type);
- }
- }
- }
主程序代码
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" creationComplete="init()">
- <mx:Script>
- <![CDATA[
- import my.DummySelectEvent;
- import mx.controls.Alert;
- private function init():void
- {
- DummySelectEvent.dispatcher.addEventListener(DummySelectEvent.SELECTED_DATA_CHANGE,dataChangeListener);
- }
- private function dataChangeListener(event:DummySelectEvent):void
- {
- var data = event.data;
- //Alert.show(event.data.name);
- detailPanel.changeMode(Detail.EDIT_SIMPLE,data);
- }
- ]]>
- </mx:Script>
- <mx:HBox x="104" y="126" width="1000">
- <ns1:List>
- </ns1:List>
- <ns1:Detail id="detailPanel" x="104" y="135" widthInit="0" widthAdvanced="600">
- </ns1:Detail>
- </mx:HBox>
- </mx:Application>
FLEX自定义事件的更多相关文章
- Flex 自定义事件
一.分派自定义事件类型 任何实现flash.event.IEventDispatcher接口的对象都可以分派事件,这包括所有显示对象和一些非显示对象类.通常,对于 自定义的非显示类,可以通过扩展fla ...
- Flex事件机制学习-自定义事件实现类间通信 .
今天,学习Flex自定义事件,可以使两个类通信,定义一个Main类. public class Main extends Sprite { public function ...
- 【教程】【FLEX】#003 自定义事件、模块间通讯
本篇笔记,主要阐明 事件是如何创建 和 如何使用自定义事件达到模块之间通讯 的效果. 句子解释: 什么叫做模块之间的通讯呢?? 简单点说,就是两个模块之间可以互相传数据. A模块 可以接收到 B模块的 ...
- Flex之自定义事件
1.通过dispatchEvent委托事件模式完成自定义事件: <?xml version="1.0" encoding="utf-8"?> < ...
- flex中dispatchEvent的用法(自定义事件) .
Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实 ...
- [置顶] flex4事件监听与自定义事件分发(三)
1.我们来说一下自定义事件子类.什么时候创建新的事件类以及怎么创建. (1)说一下,我们什么时候需要自定义事件类.举例说明,在flex中事件的基类是Event,而当我们点击某个按钮或者是单击某个组件的 ...
- Flex自定义组件开发之日周月日期选择日历控件
原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...
- ExtJS自定义事件
1.开发ExtJS组件UI的时候,基本上对于一些操作,就是与后台交互之类的多数都是用户进行点击触发一个事件,在事件的处理器handler里面调具体的业务方法,完成业务数据的处理以及业务流程的流转机制, ...
- flex 自定义组件的编写
使用flex也很久了,也改过别人写的flex自定义组件,但是就是没有系统的研究下flex组件的编写步骤,和要注意的东西,在这里我参照一本书中的例子,好好的理解下,也为了巩固下自己对flex的理解! 1 ...
随机推荐
- JS open App(未安装就跳转下载页面)
直接上代码var APPCommon = { downAppURl : "http://**/",//下载APP地址 downWeixin: "http://**&quo ...
- python爬虫抓取数据
URL管理器实现方式:1. 内存python内存待爬取URL集合:set()已爬取URL集合:set() 2. 关系数据库MySQLurls(url, is_crawled) 3. 缓存数据库(高性能 ...
- Perl语言——简单说明
Perl语言——简单说明 一.简单说明 Perl语言全称:实用摘录与报表语言|病态折中式垃圾列表器.Perl名称并不是缩写词,而是个溯写字. Perl语言历史:Larry Wall(拉里·沃尔)20世 ...
- 转:主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360
转自:Baidu 空间 2012-10-05 13:57 主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Und ...
- Meanshift filter实现简单图片的卡通化效果
利用Meanshift filter和canny边缘检测的效果,可以实现简单的图片的卡通化效果.简单的说,就是用Meanshift filter的结果减去canny算法的结果得到卡通化的效果. ...
- Android——程序移植 相关知识总结贴
android 移植笔记有感 http://www.apkbus.com/android-11842-1-1.html Android振动器系统结构和移植和调试 http://www.apkbus ...
- 【转载】Scarbee Pre-Bass 贝司的使用教程
Fender(芬达)的顶级型号Precision贝司的缩写! 好了,在了解完关于这个Bass音色的一些背景后,我们开始使用Pre-Bass了,先在Kontakt 3.5或Kontakt 4中读取它,由 ...
- 解密程序代写,订制服务qq:928900200
CS461 MP 1: Due Wednesday 09/17 by 11:59 pm Fall 2014\Anyone, from the most clueless amateur to the ...
- zendStudio 10.5破解
1.下载zendStudio 10.5(mac系统) windows系统安装文件 并安装. 2.下载破解文件,并覆盖安装目录plugins同名文件,要注意版本. 3.启动程序,输入注册码: 3 ...
- 命令行上的narrowing(随着输入逐步减少备选项)工具
前面在介绍zsh的时候,说过它的补全用来起比bash的Tab补全方便多了,在有多个备选项是你只要用光标键来挑选就是了,而不是全列出来提示你再多输入几个字符.而Emacs的anything / helm ...