惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
D
Docker
罗磊的独立博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
IT之家
IT之家
MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - BoyeeStudio

Flex Array 与 ArrayCollection.转自网络 PyAMF and django ForeignKey Django Push HTTP Response to users How to sync your github repository after fork from others'. N年没写博客了,手生锈了,准备再来磨磨! CAsyncSocket,CSocket内幕及其用法 Socket中如何设置连接超时(转载 可能用的到) 最近在我的python博客上花时间! P2P相关软件源代码下载 写个perl程序自动下载《南方周末》(2005年12月最后一期,38版,值得一看) wxWidgets开发工具及Makefile的书写!(待续。。。) 用wxWindows编程 -----第一步!(翻译)(系列1) 编VC网络程序遇到一个问题,原来是少了一个LIB。 如何优化C语言代码(程序员必读) 重温经典排序思想--C语言常用排序全解(转载--值得一看) 常用windows API WAP开发FAQ c++资源之不完全导引(全文) (转载) GNU编码标准
FLEX自定义事件
BoyeeStudio · 2013-07-02 · via 博客园 - BoyeeStudio

有时候我们需要让两个组件之间实现联动,并且在其中传递数据,自定义事件机制可以帮助我们比较优雅的实现这种需要. 

下面的例子,是打算实现一个列表和一个编辑框的联动. 

编辑框代码 

Xml代码  收藏代码

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" creationComplete="init()">  
  3.   
  4.     <mx:Script>  
  5.         <![CDATA[ 
  6.             import my.DummySelectEvent; 
  7.             import mx.controls.Alert; 
  8.             private function init():void 
  9.             { 
  10.                 DummySelectEvent.dispatcher.addEventListener(DummySelectEvent.SELECTED_DATA_CHANGE,dataChangeListener); 
  11.             } 
  12.              
  13.             private function dataChangeListener(event:DummySelectEvent):void 
  14.             { 
  15.                 var data = event.data; 
  16.                 //Alert.show(event.data.name); 
  17.                 detailPanel.changeMode(Detail.EDIT_SIMPLE,data); 
  18.             } 
  19.         ]]>  
  20.     </mx:Script>  
  21.       
  22.     <mx:HBox x="104" y="126" width="1000">  
  23.         <ns1:List>  
  24.         </ns1:List>  
  25.         <ns1:Detail id="detailPanel" x="104" y="135" widthInit="0" widthAdvanced="600">  
  26.         </ns1:Detail>  
  27.     </mx:HBox>  
  28.       
  29. </mx:Application>  


列表代码 

Xml代码  收藏代码

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="300" xmlns:my="my.*" creationComplete="initList()" xmlns:local="*">  
  3.     <mx:Script>  
  4.         <![CDATA[ 
  5.             import my.DummySelectEvent; 
  6.             import mx.events.FlexEvent; 
  7.             import my.Dummy; 
  8.             import mx.collections.ArrayCollection; 
  9.             import mx.controls.Alert; 
  10.              
  11.             private var dummyList:ArrayCollection; 
  12.              
  13.             private var itemSelected:Boolean = false; 
  14.              
  15.             private function initList():void{ 
  16.                 dummyList = new ArrayCollection(); 
  17.                 for( var i:Number = 0;i<10;i++) 
  18.                 { 
  19.                     var dummy:Dummy = new Dummy(); 
  20.                     dummy.name = "name"+i; 
  21.                     dummy.email = "email"+i; 
  22.                     dummy.mobile = "mobile" +i; 
  23.                     dummy.address = "address"+i; 
  24.                     dummy.qq = "qq"+i; 
  25.                     dummy.msn = "msn"+i; 
  26.                      
  27.                     dummyList.addItem(dummy); 
  28.                      
  29.                 } 
  30.                 dataGrid.dataProvider = dummyList; 
  31.             } 
  32.              
  33.             private function itemSelect():void 
  34.             { 
  35.                 var dataChangeEvent:DummySelectEvent = new DummySelectEvent(dataGrid.selectedItem,DummySelectEvent.SELECTED_DATA_CHANGE); 
  36.                 DummySelectEvent.dispatcher.dispatchEvent(dataChangeEvent); 
  37.             } 
  38.              
  39.             private function deleteItem():void{ 
  40.                 Alert.show("确定要删除?"); 
  41.             } 
  42.              
  43.         ]]>  
  44.     </mx:Script>  
  45.       
  46.     <mx:Spacer height="2">  
  47.     </mx:Spacer>  
  48.     <local:ListBar>  
  49.     </local:ListBar>  
  50.     <mx:DataGrid id="dataGrid"   
  51.         x="0" y="0" width="100%" height="100%"  
  52.         data="{dataGrid.selectedItem}"  
  53.         dataChange="itemSelect()" >  
  54.         <mx:columns>  
  55.             <mx:DataGridColumn headerText="name" dataField="name"/>  
  56.             <mx:DataGridColumn headerText="email" dataField="email"/>  
  57.             <mx:DataGridColumn headerText="mobile" dataField="mobile"/>  
  58.         </mx:columns>  
  59.     </mx:DataGrid>  
  60.     <mx:HBox width="100%">  
  61.         <mx:Button label="删除选中" enabled="{itemSelected}" click="deleteItem()"/>  
  62.     </mx:HBox>  
  63.       
  64. </mx:Panel>  


DummyVO代码 

Java代码  收藏代码

  1. package my  
  2. {  
  3.     [Bindable]  
  4.     public class Dummy  
  5.     {  
  6.         public function Dummy()  
  7.         {  
  8.               
  9.         }  
  10.           
  11.         public var name:String;  
  12.         public var mobile:String;  
  13.         public var email:String;  
  14.           
  15.         public var qq:String;  
  16.         public var msn:String;  
  17.         public var address:String;  
  18.           
  19.     }  
  20. }  


自定义事件代码 

Java代码  收藏代码

  1. package my  
  2. {  
  3.     import flash.events.Event;  
  4.     import flash.events.EventDispatcher;  
  5.       
  6.     public class DummySelectEvent extends Event  
  7.     {  
  8.         public var data:Object;  
  9.         public static var SELECTED_DATA_CHANGE:String = "selectedDataChange";  
  10.         public static const dispatcher:EventDispatcher=new EventDispatcher();  
  11.         public function DummySelectEvent(data:Object,type:String)  
  12.         {  
  13.             super(type,true,false);  
  14.             this.data = data;     
  15.         }  
  16.           
  17.         override public function clone():Event  
  18.         {  
  19.             return new DummySelectEvent(data,type);  
  20.         }  
  21.     }  
  22. }  


主程序代码 

Xml代码  收藏代码

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" creationComplete="init()">  
    3.   
    4.     <mx:Script>  
    5.         <![CDATA[ 
    6.             import my.DummySelectEvent; 
    7.             import mx.controls.Alert; 
    8.             private function init():void 
    9.             { 
    10.                 DummySelectEvent.dispatcher.addEventListener(DummySelectEvent.SELECTED_DATA_CHANGE,dataChangeListener); 
    11.             } 
    12.              
    13.             private function dataChangeListener(event:DummySelectEvent):void 
    14.             { 
    15.                 var data = event.data; 
    16.                 //Alert.show(event.data.name); 
    17.                 detailPanel.changeMode(Detail.EDIT_SIMPLE,data); 
    18.             } 
    19.         ]]>  
    20.     </mx:Script>  
    21.       
    22.     <mx:HBox x="104" y="126" width="1000">  
    23.         <ns1:List>  
    24.         </ns1:List>  
    25.         <ns1:Detail id="detailPanel" x="104" y="135" widthInit="0" widthAdvanced="600">  
    26.         </ns1:Detail>  
    27.     </mx:HBox>  
    28.       
    29. </mx:Application>