对不起. 我也开始务实了.
对Mate还没有了解的童鞋可以先去这里了解下..
=>Mate<=
对blazeDs还没有了解的童鞋可以先去这里了解下..
=>blazeDs<=
之前我总结了一下Mate + blazeDs我们走完整个框架流程应该有的步骤:
views=>eventMap=>eventHandler=>remoteInvoker=>services=>remoting-config.xml=>class
我们在blazeDs端要做的事情只有从remoting-config.xml开始.. class就是我们要调用的 ..
之前的那么多步骤都是在Mate中完成.
话说当我自己画完这个流程的时候我也在想. 这样是不是值得.. 或许我沾染上了Java的恶习..
为了让大家更加清晰地了解整个调用过程. 我分别使用的Mate 跟 blazeDs 的Helloworld 然后将他们组合..
我们先从blazeDs说起.
package com.taobao.designcenter;
/**
*
* @author Saito
*/
public class HelloWorld {
public HelloWorld() {
}
public String getHelloWorld() {
return "Hello World!";
}
}
写完了这个class . 将编译过后的 .class文件扔到类似如下的目录下 ..
D:\Apache Software Foundation\Tomcat 6.0\webapps\blazeds\WEB-INF\classes 注意你的包名 .. 是什么包从包开始copy到目录下就ok .
写完了我们只要在下面地址寻找remoting-config.xml文件.在Service里面增加如下一段
D:\Apache Software Foundation\Tomcat 6.0\webapps\blazeds\WEB-INF\flex
<destination id="helloWorld">
<properties>
<source>com.taobao.designcenter.HelloWorld</source>
</properties>
</destination>
然后启动Tomcat就ok了..
现在编写客户端Mate部分.. Mate一般来说划分包的结构为. views maps events由于我们要调用blazeDs的东西.所以增加一个services.
顾名思义 views是view . maps是一个events映射. events就是event .services描述service . 囧rz ...
既然是跟blazeDs交互. 那就先从services开始吧.新建一个Service.mxml.
<?xml version="1.0" encoding="utf-8"?>
<mx:Object xmlns="http://mate.asfusion.com/" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:RemoteObject id="helloService" destination="helloWorld"
source="com.taobao.designcenter.HelloWorld"/>
</mx:Object>
destination是供eventHandler调用的. source就是你的blazeDs下的class的位置.
接下来在maps里面新建一个 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 com.taobao.designcenter.events.MessageEvent;
]]>
</mx:Script>
<EventHandlers type="{MessageEvent.GET}">
<RemoteObjectInvoker
source="com.taobao.designcenter.HelloWorld" destination="helloWorld"
method="getHelloWorld">
<resultHandlers>
<CallBack method="handleResult" arguments="{resultObject}"/>
</resultHandlers>
</RemoteObjectInvoker>
</EventHandlers>
</EventMap>
EventHandlers type就是事件类型. 什么事件类型由我这个Handler处理.下面我们来给出这个事件的代码.
RemoteObjectInvoker source destination跟上面对应. method就是我们的method .如果我们有参数 可以加 arguments这个属性.
resultHandlers CallBack就是回来call谁? . method是我们自己的处理方法..以及参数.看清楚. 参数是我们的blazeDs端得返回值..这个很强大..
事件的定义在这边.. events 里面新建MessageEvent.as
package com.taobao.designcenter.events
{
import flash.events.Event;
public class MessageEvent extends Event
{
public static const GET:String = "getMessage";
public var name:String;
public function MessageEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
这边bubbles就是 是不是可以上溢.. 另一个是否可取消. 这边的事件定义就在上面调用.
我们现在还缺少handleResult 以及views ..
我们来创建一个views . 在views下面创建一个 MessagePanel.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/"
title="Message directly from event response"
resizeEffect="Resize"
horizontalScrollPolicy="off"
verticalScrollPolicy="off">
<mx:Script>
<![CDATA[
import com.taobao.designcenter.events.MessageEvent;
public function handleResult(text:String):void
{
currentState='response';
display.text = text;
}
private function submitForm():void
{
var event:MessageEvent = new MessageEvent(MessageEvent.GET, true);
event.name = inputName.text;
dispatchEvent(event);
}
]]>
</mx:Script>
<mx:HBox>
<mx:Label text="Write your name:"/>
<mx:TextInput id="inputName" enter="submitForm()"/>
<mx:Button label="GO" click="submitForm()"/>
</mx:HBox>
<mx:states>
<mx:State name="response">
<mx:AddChild position="lastChild">
<!-- We get the message text directly from the server response by
using the response attribute in the Dispatcher's ResponseListener -->
<mx:Text id="display" styleName="message" />
</mx:AddChild>
</mx:State>
</mx:states>
</mx:Panel>
关于界面的部分就不浪费时间了. 我们主要看event处理. 我们在Button处产生了一个MessageEvent ... 然后dispatchEvent了. 之后就会被我们的Handler捕获.. 然后调用我们之前的resultHandlers .. 这个handler就写在我们上面这里handleResult 然后我们的逻辑就全部完成了..
总结一下. button产生了一个MessageEvent..然后这个Event被捕获. 捕获完成后被处理. 处理过程中拿到了blazeDs中的提供服务的值.. 然后返回了结果. 我们把这个结果传递给了handler.. handler为我们在界面上做出响应.. so ... . ..
ok .. 最后再Application里面显示我们的结果..
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:view="com.taobao.designcenter.views.*"
xmlns:maps="com.taobao.designcenter.maps.*"
layout="vertical" >
<maps:EventMaps />
<mx:HBox>
<view:MessagePanel />
</mx:HBox>
</mx:Application>
多余话我就不说了. 你还是享受这繁复过程后的兴奋结果吧..
再来看下整个Mate + blazeDs的过程...
views=>eventMap=>eventHandler=>remoteInvoker=>services=>remoting-config.xml=>class
ok .. 在这里推荐几个教程. 我的东西也参考自下面的内容 .大家可以去围观一下..
Mate HelloWorld with amfphp
用一个HelloWorld例子手把手教会你使用BlazeDS
god bless you ...
分享到:
- 2009-09-29 20:40
- 浏览 1609
- 评论(3)
- 论坛回复 / 浏览 (3 / 3358)
- 查看更多
相关推荐
官网下载的适用于树莓派4B的ubuntu-mate-20.04.1-desktop-armhf+raspi种子
Teammate 中文文档
ubuntu1804 针对树莓派的镜像,可以下载后利用百度网盘或者迅雷等下载镜像文件,然后按照教程安装
HUAWEI+Mate60系列
开源项目-raspi-dirscanner.zip,dirscanner - crawl 100000 directories recursively without waiting file listing to be finished with a channel
kali-linux-mate-2016.2-amd64.torrent 黑客 专用 系统 种子 内含大量专用工具。 通过本页面下载后的操作与本人无关!!!
资源分类:Python库 所属语言:Python 资源全名:pathlib_mate-1.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
FAnuC+0i-Mate+TC操作说明书
从华为mate30pro提取出来的 把下载的文件拷贝到\内部存储\Huawei\Themes下使用
数控系统外设通讯 fanuc-0i-mate-mc tc.pdf数控系统外设通讯 fanuc-0i-mate-mc tc.pdf数控系统外设通讯 fanuc-0i-mate-mc tc.pdf数控系统外设通讯 fanuc-0i-mate-mc tc.pdf数控系统外设通讯 fanuc-0i-mate-mc tc.pdf...
软件介绍: 树莓派3b安装mate启动所需要的四个文件,安装方法:解压后将原版系统boot里的四个文件复制到mate的boot里即可。bootcode.binconfig.txtfixup.datstart.elf
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、...
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、...
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、...
【资源说明】 基于SpringBoot快速...1. 初始化爬虫元数据表 tbl_spider_mate_data(数据库脚本:doc/tbl_spider_mate_data.sql) 2. 启动项目即可自动爬取相关数据到mongoDB对应的集合中(集合名称为{spider_name})
Ubuntu MATE 简单而灵活。 您可以享受轻量级和熟悉的桌面环境,尤其是如果您使用 10.10 以下的 Ubuntu 版本。 它基于 Ubuntu 最新的 LTS 版本,因此您将拥有非常稳定的体验,兼容新旧硬件。 MATE 桌面环境是轻量级的...
华为Huawei mate 30 mockup .xd .psd .ai素材下载
api-mate.github.io API伴侣Github页面
app-mate.github.io 库一个新的网页
由于网络培训需要摄像头,结果自己的笔记本摄像头驱动找不到无法使用,曲线解决问题。可以用手机作为笔记的摄像头,DroidCam.Client.6.0.+App6.48,亲测有效:华为mate8