`

使用Mate实现Flex组件间的交互

    博客分类:
  • Flex
阅读更多

最近的项目中使用Flex来实现前端的界面显示,那么不同Flex组件间的数据通信便是一个重要的问题。我使用了Mate实现不同组件之间的数据通信。具体方法如下:

  1. 新建Flex项目,在src中建立以下四个包:business、comp、event、map。
  2. Mate官网 上下载mate的swc包,并添加到Flex工程的库中。
  3. 在events包中新建一个自定义事件类MyEvent.as
    package events{
    	public class MyEvent
     extends Event 	{
    	        public static const CLICK_ITEM:String = "clickItem";
    		private var _item:String;
    		public function MyEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false)
    		{
    			super(type, bubbles, cancelable);
    		}
    		public function get item():String
    		{
    			return _item;
    		}
    		public function set item(value:String):void
    		{
    			_item = value;
    		}
    
    	}
    }
     
  4. 在comp中建立两个组件comp1、comp2。其中comp1中有一个输入框和一个提交按钮,comp2中有一个文本显示框,用于显示comp1中发出的信息。
  5. 在business中建立MyController.as类,用于定义事件处理业务。
    package business
    {
    	public class MyController
    	{
    		[Bindable]
    		public var data : String;
    		[Bindable]
    		public var type : String;
    		[Bindable]
    		public var name : String;
    		public function setData():void{
    			if ( type == "clickItem" ) {
    				data = "Hi,"+name;
    			}
    		}
    	}
    }
     
  6. 在map中建立EventMaps.mxml,用于定义事件的映射。
    <?xml version="1.0" encoding="utf-8"?>
    <EventMap xmlns:mx="http://www.adobe.com/2006/mxml" 
    		  xmlns="http://mate.asfusion.com/">
    	<mx:Script>
    		<![CDATA[
    			import events.MyEvent;
    			import comp.*;
    			import business.*;
    		]]>
    	</mx:Script>
    	<EventHandlers type="{MyEvent.CLICK_ITEM}" >
    		<MethodInvoker generator="{MyController}" method="setData">
    			<Properties type="{MyEvent.CLICK_ITEM}" name="{event.item}" />	
    		</MethodInvoker>
    	</EventHandlers>
    	<Injectors target="{comp2}">
    		<PropertyInjector targetKey="data" source="{MyController}" sourceKey="dataStr" />
    	</Injectors>
    </EventMap>
  7. 在comp1中加入事件触发代码,comp1代码如下:
    <?xml version="1.0" encoding="utf-8"?>
    <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
    		 xmlns:s="library://ns.adobe.com/flex/spark" 
    		 xmlns:mx="library://ns.adobe.com/flex/mx" width="200" height="300">
    	<s:layout>
    		<s:BasicLayout/>
    	</s:layout>
    	<fx:Script>
    		<![CDATA[
    			import event.MyEvent;
    			private function clickHandler(event:Event):void{				
    		         	var myEvent:MyEvent = new MyEvent(MyEvent.CLICK_ITEM,true);
    				myEvent.item = txt.text;
    				dispatchEvent(myEvent);
    			}
    		]]>
    	</fx:Script>
    	<s:Button x="99" y="171" label="按钮" id="btn" click="clickHandler(event)"/>
    	<s:TextInput x="86" y="87" id="txt"/>
    </s:Group>
    
     
  8. 在comp2中定义数据接收变量,comp2代码如下
    <?xml version="1.0" encoding="utf-8"?>
    <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
    		 xmlns:s="library://ns.adobe.com/flex/spark" 
    		 xmlns:mx="library://ns.adobe.com/flex/mx" width="200" height="300">
    	<s:layout>
    		<s:BasicLayout/>
    	</s:layout>
    	<fx:Script>
    		<![CDATA[
    			[Bindable]
    			public var data:String;
    		]]>
    	</fx:Script>
    	<s:BorderContainer x="49" y="47" width="200" height="200" backgroundColor="#BEF2F8">
    		<s:Label x="35" y="47" width="127" height="67" id="lbl" text="{data}"/>
    		<s:Label x="34" y="20" text="接收到的内容:"/>
    	</s:BorderContainer>
    </s:Group>
    
     
  9. 在应用程序文件中加入组件布局以及EventMap的声明
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    			   xmlns:s="library://ns.adobe.com/flex/spark" 
    			   xmlns:mx="library://ns.adobe.com/flex/mx" 
    			   xmlns:comp="comp.*"
    			   xmlns:map="map.*"
    			   minWidth="955" minHeight="600">
    	
    	<fx:Declarations>
    		<map:EventMaps />
    	</fx:Declarations>
    	
    	<s:HGroup>
    		<comp:comp1 id="comp1" />
    		<comp:comp2 id="comp2" />
    	</s:HGroup>
    </s:Application>
    
     
  10. 运行应用程序,试试看~
1
1
分享到:
评论

相关推荐

    Flex Mate框架swc包及Mate用法

    使用Flex Mate框架时,开发者首先需要将`library.swf`添加到项目的类路径中,然后可以开始配置Mate的容器,定义应用的结构和组件间的依赖关系。这通常通过XML配置文件完成,这些文件描述了如何创建和组装对象,以及...

    Flex Mate HelloWorld 例子

    总的来说,Flex Mate HelloWorld例子旨在帮助初学者了解如何在Flex应用中使用Mate框架来构建组件化、事件驱动的应用。通过学习这个例子,开发者可以掌握如何组织代码、创建Composer以及利用事件来协调组件的交互,...

    Flex中文API

    ActionScript用于编写应用程序的逻辑和交互,它提供了类库,包括Math、Date、Array等,以及与组件交互的手段。 3. **MXML**:MXML是Flex的标记语言,用于声明式地创建用户界面和组件。它可以与ActionScript混合使用...

    flex 面试题flex

    6. Flex与后台交互: 主要通过Remote Object或HTTP Service实现数据交换。Remote Object用于AMF格式的数据传输,HTTP Service则处理XML或JSON等文本格式的数据。 7. 前端性能优化: - 对于SWF体积大的问题,可以...

    Flex 4 高级编程 Flex 4 高级编程

    4. **骨骼动画(Skinning and States)**:Flex 4 强化了组件的皮肤机制,通过定义不同状态(如normal、hover、down等),可以实现组件在不同交互下的动态变化,增强了用户体验。 5. **数据绑定和依赖注入**:Flex ...

    一个用Flex做的项目 (功能非常强大!)

    4. Flex组件库:Flex SDK提供了一套丰富的预构建UI组件,如按钮、文本框、列表、面板等,这些组件可快速构建用户界面,大大提高了开发效率。 5. Adobe Flash Player:Flex编译出的SWF文件需要在Flash Player环境中...

    使用mate 的天气widget源代码

    在Flex中,这通常由MXML组件或ActionScript类实现。WeatherWidget的视图可能包括一个温度计、天气图标和预报信息。 6. **控制器(Controller)**:控制器处理用户输入和业务逻辑,它们可以监听视图的事件,操作模型...

    Flex3.0面试题 Flex3.0面试题

    Flex 开发框架有多种,包括 Cairngorm、Puremvc、Mate、Swiz 等。Cairngorm 作为 Adobe 官方出品,有着贵族血统的它比较全面,是这些框架中已知 bug 最少的,但是基于他的应用相对臃肿复杂一些,需要对每个可以被...

    flex mvc 架构图

    在Flex中,我们可以使用 Cairngorm、Mate、Swiz 或 RobotLegs 等库来实现MVC中的模型层。 2. **视图(View)**:视图是用户看到和与之交互的界面元素。在Flex中,MXML文件通常用来定义视图组件,如按钮、文本框等。...

    flex 当天24小时曲线统计

    在Flex中,我们可以使用类库如Adobe's Cairngorm或Mate来组织应用程序的架构,而图表通常由`mx:LineChart`或`spark:LineSeries`组件来实现。`RealChart`可能是一个自定义的图表组件或者是一个第三方图表库,用于生成...

    FLEX资料集合 FLEX资料集合

    4. **Flex Component Kit**:Flex提供了一组预定义的UI组件,如Button、Label、List等,这些组件已经实现了丰富的交互效果和样式,可以直接在MXML中使用。 5. **数据绑定**:Flex支持数据绑定,允许UI组件的状态与...

    flex+spring 工程

    4. **库文件**:描述中提到的"必备的lib"可能包含Flex SDK的库,Spring BlazeDS库(用于Flex和Spring之间的通信),以及其他第三方库,如 Parsley 或 Mate(用于依赖注入和事件驱动架构在Flex中的实现)。...

    flex电子教案ppt

    2. **Flex组件库**:Flex提供了丰富的组件集合,如Button、CheckBox、RadioButton、Label、TextArea等,这些组件可以快速构建用户界面。此外,还有高级组件如DataGrid、Tree和Chart,用于数据展示和交互。 3. **...

    flex mvc架構

    在实际项目中,`library.swf`可能是一个包含预编译的Flex组件库,而`catalog.xml`可能是描述这个库中组件信息的元数据文件,用于在开发环境中快速查找和使用这些组件。结合Flex MVC架构,这两个文件可能被用于构建和...

    flex应用flex应用flex应用

    3. **Flex组件库**:Flex SDK包含一组预定义的UI组件,如按钮、文本框、列表、面板等,这些组件可以被MXML或ActionScript轻松使用,快速构建功能丰富的界面。 4. **数据绑定**:Flex支持数据绑定,这意味着UI组件的...

    flex包用于开发

    5. **Flex Component Kit**:Flex组件库包含了一系列预定义的UI控件,如按钮、文本输入框、面板等,开发者可以快速地在应用中添加和自定义这些组件。 6. **Flex Framework**:Flex框架提供了一套完整的架构来帮助...

    Enterprise Development with Flex

    通过定义新组件,开发者可以封装复杂的UI逻辑,并使其能够像标准Flex组件一样被重复使用。 - **构建组件库**:为了便于管理和重用,开发者可以创建一个包含多个自定义组件的库。这样的库不仅能够简化开发过程,还...

    Flex中文帮助-1

    2. **Flex组件库** - Flex包含一个庞大的组件集,如按钮、文本框、列表等,用于构建各种用户界面元素。这些组件基于Flex Component Framework,易于自定义和扩展。 3. **Flex与Java的集成** - ** BlazeDS**:...

    Flex实例,form表单

    总结,使用Flex Builder创建联系人表单涉及到了Flex的基础知识,包括组件的使用、事件处理、数据绑定以及UI设计。理解这些概念,将有助于你构建更复杂的Flex应用程序。在实际开发中,你还可以结合其他技术,如...

    flex3精通预览版

    第二阶段是提高阶段,这个阶段将深化对Flex的理解,涉及到更复杂的组件使用和自定义组件的开发。可能会讲解如何利用Flex的图形绘制API创建自定义视觉效果,以及如何使用Flex的网络编程接口与服务器进行数据交换。...

Global site tag (gtag.js) - Google Analytics