最近的项目中使用Flex来实现前端的界面显示,那么不同Flex组件间的数据通信便是一个重要的问题。我使用了Mate实现不同组件之间的数据通信。具体方法如下:
- 新建Flex项目,在src中建立以下四个包:business、comp、event、map。
- 在 Mate官网
上下载mate的swc包,并添加到Flex工程的库中。
-
在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;
}
}
}
- 在comp中建立两个组件comp1、comp2。其中comp1中有一个输入框和一个提交按钮,comp2中有一个文本显示框,用于显示comp1中发出的信息。
- 在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;
}
}
}
}
- 在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>
- 在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>
- 在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>
- 在应用程序文件中加入组件布局以及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>
- 运行应用程序,试试看~
分享到:
相关推荐
使用Flex Mate框架时,开发者首先需要将`library.swf`添加到项目的类路径中,然后可以开始配置Mate的容器,定义应用的结构和组件间的依赖关系。这通常通过XML配置文件完成,这些文件描述了如何创建和组装对象,以及...
总的来说,Flex Mate HelloWorld例子旨在帮助初学者了解如何在Flex应用中使用Mate框架来构建组件化、事件驱动的应用。通过学习这个例子,开发者可以掌握如何组织代码、创建Composer以及利用事件来协调组件的交互,...
ActionScript用于编写应用程序的逻辑和交互,它提供了类库,包括Math、Date、Array等,以及与组件交互的手段。 3. **MXML**:MXML是Flex的标记语言,用于声明式地创建用户界面和组件。它可以与ActionScript混合使用...
6. Flex与后台交互: 主要通过Remote Object或HTTP Service实现数据交换。Remote Object用于AMF格式的数据传输,HTTP Service则处理XML或JSON等文本格式的数据。 7. 前端性能优化: - 对于SWF体积大的问题,可以...
4. **骨骼动画(Skinning and States)**:Flex 4 强化了组件的皮肤机制,通过定义不同状态(如normal、hover、down等),可以实现组件在不同交互下的动态变化,增强了用户体验。 5. **数据绑定和依赖注入**:Flex ...
4. Flex组件库:Flex SDK提供了一套丰富的预构建UI组件,如按钮、文本框、列表、面板等,这些组件可快速构建用户界面,大大提高了开发效率。 5. Adobe Flash Player:Flex编译出的SWF文件需要在Flash Player环境中...
在Flex中,这通常由MXML组件或ActionScript类实现。WeatherWidget的视图可能包括一个温度计、天气图标和预报信息。 6. **控制器(Controller)**:控制器处理用户输入和业务逻辑,它们可以监听视图的事件,操作模型...
Flex 开发框架有多种,包括 Cairngorm、Puremvc、Mate、Swiz 等。Cairngorm 作为 Adobe 官方出品,有着贵族血统的它比较全面,是这些框架中已知 bug 最少的,但是基于他的应用相对臃肿复杂一些,需要对每个可以被...
在Flex中,我们可以使用 Cairngorm、Mate、Swiz 或 RobotLegs 等库来实现MVC中的模型层。 2. **视图(View)**:视图是用户看到和与之交互的界面元素。在Flex中,MXML文件通常用来定义视图组件,如按钮、文本框等。...
在Flex中,我们可以使用类库如Adobe's Cairngorm或Mate来组织应用程序的架构,而图表通常由`mx:LineChart`或`spark:LineSeries`组件来实现。`RealChart`可能是一个自定义的图表组件或者是一个第三方图表库,用于生成...
4. **Flex Component Kit**:Flex提供了一组预定义的UI组件,如Button、Label、List等,这些组件已经实现了丰富的交互效果和样式,可以直接在MXML中使用。 5. **数据绑定**:Flex支持数据绑定,允许UI组件的状态与...
4. **库文件**:描述中提到的"必备的lib"可能包含Flex SDK的库,Spring BlazeDS库(用于Flex和Spring之间的通信),以及其他第三方库,如 Parsley 或 Mate(用于依赖注入和事件驱动架构在Flex中的实现)。...
2. **Flex组件库**:Flex提供了丰富的组件集合,如Button、CheckBox、RadioButton、Label、TextArea等,这些组件可以快速构建用户界面。此外,还有高级组件如DataGrid、Tree和Chart,用于数据展示和交互。 3. **...
在实际项目中,`library.swf`可能是一个包含预编译的Flex组件库,而`catalog.xml`可能是描述这个库中组件信息的元数据文件,用于在开发环境中快速查找和使用这些组件。结合Flex MVC架构,这两个文件可能被用于构建和...
3. **Flex组件库**:Flex SDK包含一组预定义的UI组件,如按钮、文本框、列表、面板等,这些组件可以被MXML或ActionScript轻松使用,快速构建功能丰富的界面。 4. **数据绑定**:Flex支持数据绑定,这意味着UI组件的...
5. **Flex Component Kit**:Flex组件库包含了一系列预定义的UI控件,如按钮、文本输入框、面板等,开发者可以快速地在应用中添加和自定义这些组件。 6. **Flex Framework**:Flex框架提供了一套完整的架构来帮助...
通过定义新组件,开发者可以封装复杂的UI逻辑,并使其能够像标准Flex组件一样被重复使用。 - **构建组件库**:为了便于管理和重用,开发者可以创建一个包含多个自定义组件的库。这样的库不仅能够简化开发过程,还...
2. **Flex组件库** - Flex包含一个庞大的组件集,如按钮、文本框、列表等,用于构建各种用户界面元素。这些组件基于Flex Component Framework,易于自定义和扩展。 3. **Flex与Java的集成** - ** BlazeDS**:...
总结,使用Flex Builder创建联系人表单涉及到了Flex的基础知识,包括组件的使用、事件处理、数据绑定以及UI设计。理解这些概念,将有助于你构建更复杂的Flex应用程序。在实际开发中,你还可以结合其他技术,如...
第二阶段是提高阶段,这个阶段将深化对Flex的理解,涉及到更复杂的组件使用和自定义组件的开发。可能会讲解如何利用Flex的图形绘制API创建自定义视觉效果,以及如何使用Flex的网络编程接口与服务器进行数据交换。...