`

flex frame -- Mate

    博客分类:
  • flex
阅读更多


Typically, the basic steps to create a Mate project are:

1. Add the compiled framework code to your project (Mate.swc).

2. Create a file that will be the EventMap .

3. Include the event map in your main Application file.

4. Create a custom event.

5. Somewhere, dispatch that event.

6. Add EventHandlers in your event map that listen for the event type you dispatched.

7. Execute some actions inside the EventHandlers block (ie: call the server, store data, etc).

8. Repeat 4-7 for every event you need.

准备工作:

首先在Event Map里面建立一个新的Mate   tag:<MessageHandler>,这个新的Mate   tag的作用是建立一个用于接收message的tag,具体例子请看下面:
<mx:Consumer destination="YourGateway" />

<MessageHandlers destination="YourGateway">
    ... here what you want to happen when this message is received ...
</MessageHandlers>

1、从DataService发送一个消息。(例如上例中的consumer,接收consumer发送过来的消息)
2、在<MessageHandler>里面加入一些处理方式,例如上图所示的,在<MessageHandler>首先使用了<MethodeInvoker>
3、当调用完<MethodeInvoker>后,会自动触发下一个Mate   tag:<EventAnnouncer>
4、<EventAnnouncer>的作用就是调用某个Event。并通过Event Bus将这个Event发送出去。
    例如:http://mate.asfusion.com/page/documentation/tags/eventannouncer  这个里面所示的方式。
5、<Listener>部分是用于监听某一个Event的,在某些程度上它类似于<EventHandler>的处理方式。
    具体使用方式:
    <mate:Listener type="myEventType" method="handleThisEvent" />
    or
    <mate:Listener type="myEventType" receive="handleThisEvent(event)" />
    这个新的tag就是我们在这个流程上面重点介绍的。首先它应该在在View里面的,而<Listener>作用就是监听某个Event的响应事件。
    根据上图所示,当触发了<EventAnnouncer>后,会调用<mate:Listener>里面的handleThisEvent,进行一些处理。片段代码如下:
    <EventAnnouncer generator="MyEventClass" type="myEventType">
        <Properties myProperty="myValue" myProperty2="100"/>
    </EventAnnouncer>

    <mate:Listener type="myEventType" receive="handleThisEvent(event)" />
6、<mate:Listener>的最终目的是将处理结果反应在视图上面。


以上就是 单向通讯:从业务逻辑层到视图(One-way communication from business logic to views: Listener tag)的流程图了。

重点部分:
<mate:Listener>的建立、使用。
1、<mate:Listener>是建立在视图上的。
2、用于接收Event Map里面的<EventAnnouncer>处理结果。



还是老规矩,我把原本的流程介绍去掉了,然后以自己的理解进行一下翻译:
1.1、我们在视图里面建立一个mate tag:Dispatcher ,同时这个这个标签是一个ResponseHandlers类型的标签。
      即我们在<Dispatcher>里面增加了一个<ResponseHandlers>的标签。代码如下:

      <mate:Dispatcher id="messageDispatcher" generator="{MessageEvent}" type="{MessageEvent.GET}">
           <mate:eventProperties>
               <mate:EventProperties name="{inputName.text}"/>
           </mate:eventProperties>
 
           <mate:ServiceResponseHandler result="handleResult(event.result.text)" fault="handleFault(event.fault.faultString)"/>
       </mate:Dispatcher>
   以上代码copay自:http://mate.asfusion.com/assets/content/examples/helloworld/srcview/
       由于之前没有跟大家介绍过这个标签,因此我来进行一下解释。
       a、我们定义了一个id=messageDispatcher的<Dispatcher>类型的mate tag。而它的作用就是代替Flex里面的dispatcherEvent。
       b、在<Dispatcher>里面我们定义了一个属性标签:<eventProperties>,同时传入了一个属性(name)。
       那么这个标签与<Properties>有什么区别呢?
       <Properties>:用于类似<EventAnnouncer>这样的结构里面。它的作用也是传递一些属性。
       <eventProperties>:根据它的命名我们可以得出,它是用在Dispatcher里面的,也就是说,它是Event Properties。
1.2、我们又在1.1的基础上增加了一个新的标签:<ServiceResponseHandler>,这个标签的作用就是定义一个关于service的相应标签
         而<Dispatcher>里面可以让我们得知,它具体有如下功能:
        首先会dispatch某一个event,然后会给这个event传入一些参数,同时声明一个ServiceResponseHandler,作为响应这个event的接收器。
        也就说,当这个事件触发后,会通过ServiceResponseHandler得到一些响应的结果。
  2、将<Dispatcher>的内容发送给Event Bus。(这个地方与one-way Communication是一致的)
  3、Event Bus将这个被触发的event交给Event Map里面。同时在Event Map里面也定义了相应的EventHandler tag用做接收Event Bus送过来的消息。
  4、在这些定义好的EventHandler里面,会有一组动作来响应这个Event(即从Event Bus送过来的相同type的Event)
        在上图中,EventHandler首先调用的是ServiceInvoker(也就是负责调用Service的标签)
  5、当调用完ServiceInvoker后,会有一些返回值,然后将这些返回值当到某一个Class里面,因此使用了MethodeInvoker标签。
        注意:这个MethodeInvoker调用的method,会返回值,而它的返回值我们使用如下的方式得到:lastReturn.XXXX。例如如下的代码:
       <EventHandlers type="{FlexEvent.INITIALIZE}"> 
           <MethodInvoker generator="{Initializer}" method="loadFlashVars" />
           <EventAnnouncer generator="{WeatherEvent}" type="{WeatherEvent.GET}">
               <Properties location="{lastReturn.location}" unit="{lastReturn.unit}" />
           </EventAnnouncer>
      </EventHandlers>
     解释一下:
     a、Event Map里面定义了一个用于接收类型为: FlexEvent .INITIALIZE的<EventHandler>。
     b、当接收到后会调用Initializer class里面的loadFlashVars这个method。
     c、loadFlashVars具有一个返回值,当调用完loadFlashVars后,我们再次调用EventAnnouncer这个标签中的WeatherEvent .GET
      (这个地方相当于触dispatchEvent( new MyEvent( WeatherEvent .GET  ))
     d、同时使用lastReturn .location 和 lastReturn .unit 对WeatherEvent的两个属性:location 和 unit进行赋值。
 
  6、根据上图所示,<EventHandler>再次调用了ResponseAnnouncer。
        注意:<EventAnnouncer>是ResponseAnnouncer的一个具体的类型,而ResponseAnnouncer还包括< S erviceResponseAnnouncer >等
  7、而调用<ResponseAnnouncer>的结果是,将<ResponseAnnouncer>发送给了Event Bus
  8、而Event Bus将<ResponseAnnouncer>响应的结果放在了<ResponseHandlers>
  9、<ResponseHandlers>是在<Dispatcher>里面定义的结构,用于接收任何的响应事件。我们要做的就是在<ResponseHandlers>里面写上用于更新UI的操作。
 
以上就是 双向通讯:分派和响应标签(Dispatcher and ResponseHandler tags)的全部流程图了。
 
这个流程图的重点部分:
它向我们展示了Dispatcher 和 ResponseHandler  这两个mate tag的用法。通过以上的一些解耦,可以使我们将mvc彻底分离。

thanks:

分享到:
评论

相关推荐

    mybatis-mate-examples-master.zip

    Mybatis-Mate为 MyBatis-Plus ... &lt;artifactId&gt;mybatis-mate-starter &lt;version&gt;1.2.4 注解(实体分包使用) &lt;groupId&gt;com.baomidou&lt;/groupId&gt; &lt;artifactId&gt;mybatis-mate-annotation &lt;version&gt;1.2.4 &lt;/dependency&gt;

    发那科-LR-mate-200ic机器人样本.pdf

    发那科-LR-mate-200ic机器人样本pdf,发那科-LR-mate-200ic机器人样本

    kali-linux-mate-2016.2-amd64.torrent

    kali-linux-mate-2016.2-amd64.torrent 黑客 专用 系统 种子 内含大量专用工具。 通过本页面下载后的操作与本人无关!!!

    树莓派4B的ubuntu-mate-20.04.1种子

    官网下载的适用于树莓派4B的ubuntu-mate-20.04.1-desktop-armhf+raspi种子

    POWER-MATE-E

    根据提供的文件信息,我们可以推断出这是一份关于FANUC POWER-MATE-E系统的PMC( Programmable Machine Controller)编程文档。下面将详细解释文件中提到的关键知识点。 ### 1. FANUC POWER-MATE-E 系统概述 FANUC...

    HUAWEI华为mate30-Mate40-MATE 50 PROUSB数据线线刷清除平台工具软件激活设备锁强制退出方案

    HUAWEI华为mate30-Mate40-MATE 50 PROUSB数据线线刷清除平台工具软件激活设备锁强制退出方案

    超低厚度微型MATE-N-LOK连接器系统.pdf

    超低厚度微型MATE-N-LOK连接器系统是一种专为便携式手持设备设计的电子连接器,它拥有超薄的外形设计,能够满足设备轻薄化的发展趋势。这种连接器系统具有微型MATE-N-LOK系列连接器的共同特点,即可靠性高和性能优质...

    ubuntu-mate-18.04.2-beta1-desktop-armhf+raspi-ext4.img.txt

    针对树莓派的Ubuntu稳定版桌面系统,文件含有百度网盘下载链接

    Flex Mate框架swc包及Mate用法

    Flex Mate框架是一个强大的ActionScript 3.0框架,主要用于构建Adobe Flex和Flash Builder应用程序。它提供了灵活的依赖注入(DI)和控制反转(IOC)功能,使得开发人员能够更高效地组织代码,提高代码的可重用性...

    麒麟系统进程 mate-indicators 补丁包

    麒麟系统进程 mate-indicators 补丁包是专为麒麟操作系统设计的一个修复程序,主要目标是解决mate-indicators进程在系统中占用资源异常的问题。mate-indicators是Mate桌面环境中的一个关键组件,它负责管理和显示...

    ubuntu-mate-18.04.2-beta1-desktop-armhf+raspi-ext4.img.xz.torrent

    ubuntu1804 针对树莓派的镜像,可以下载后利用百度网盘或者迅雷等下载镜像文件,然后按照教程安装

    openSUSE 13.2安装MATE桌面

    manager mate-settings-daemon mate-desktop mate-panel atril engrampa geeqie cheese gucharmap mate-applets mate-calc mate-power-manager mate-media mate-screensaver mate-system-monitor mate-terminal mate...

    FANUC数控系统0i Mate-TB操作说明书.pdf

    【FANUC数控系统0i Mate-TB操作说明书】提供了关于如何安全有效地使用该系统的详细指导。FANUC数控系统0i Mate-TB是一款广泛应用于机械加工领域的控制系统,旨在提高机床的精度和效率。 安全须知是操作此类系统的...

    meta-indicators补丁包

    meta-indicators补丁包

    FANUC_0i-C-0i_Mate-C简明联机

    FANUC 0i-C/0i Mate-C是FANUC公司生产的一款数控系统,广泛应用于机械加工领域。这款数控系统以其高稳定性和易用性深受用户喜爱。接下来,我们将详细介绍FANUC 0i-C/0i Mate-C系统的一些关键知识点。 首先是FANUC 0...

    mybatis插件最新破解版,没有之一,亲测

    1.下载插件 插件下载完毕,存放指定位置,文件名默认应该是:mybatis-plus.jar 2.打开Intellij idea工具,打开菜单 File --&gt; settings 选择 Plugs,点击Install plug from disk,选择刚刚下载的插件jar文件,确认后...

    开源项目-raspi-dirscanner.zip

    开源项目-raspi-dirscanner.zip,dirscanner - crawl 100000 directories recursively without waiting file listing to be finished with a channel

    前端开源库-ejs-mate

    前端开源库-ejs-mateEJS Mate,Express 4.x局部布局,局部。

    R30iB-mate Plus .igs

    FANUC R-30IB mate Plus控制柜3D模型

Global site tag (gtag.js) - Google Analytics