- 浏览: 128409 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhanchaojiang:
...
Flash使用到数学、物理的公式 -
沈冠军:
太好啦,呵呵···
用Flex Builder创建第一个Flex AIR程序 -
zht110227:
代码能加上点注释吗?看着效果更好。
Flex的通信方式(N)——URLLoader -
yangkd548:
可能是SWF是2.0的原因吧,你用3.0的试试吧
Flex与Flash的交互_1(初级简单示例) -
aotie:
你好我套用你的模式!做为什么这句 flashMc=flashC ...
Flex与Flash的交互_1(初级简单示例)
AMF是Adobe独家开发出来的通信协议,它采用二进制压缩,序列化、反序列化、传输数据,从而为Flash 播放器与Flash Remoting网关通信提供了一种轻量级的、高效能的通信方式。如下图所示:
AMF(Action Message Format)是一种 binary format的资料型态,透过 AMF overHTTP的方式将flash端资料编码后传回server,server端的remotingadaptor接收到资料后则会译码回正确的native对象,交给正确的程序处理。
AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML, LoadVars和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。
注意:Flash Remoting需要浏览器支持Binary POST,Flash 播放器在Netscape 6.x.环境下运行Flash Remoting会不起作用(Flash Remoting调用没有效果也不返回错误), Netscape 7已经纠正了这个bug 。对于早期Safari和Chimera版的苹果机也有这个问题。
下面是一个flex amf socket连接例子:
java服务器代码:
Flex端的代码如下:
AMF(Action Message Format)是一种 binary format的资料型态,透过 AMF overHTTP的方式将flash端资料编码后传回server,server端的remotingadaptor接收到资料后则会译码回正确的native对象,交给正确的程序处理。
AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML, LoadVars和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。
注意:Flash Remoting需要浏览器支持Binary POST,Flash 播放器在Netscape 6.x.环境下运行Flash Remoting会不起作用(Flash Remoting调用没有效果也不返回错误), Netscape 7已经纠正了这个bug 。对于早期Safari和Chimera版的苹果机也有这个问题。
下面是一个flex amf socket连接例子:
java服务器代码:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sockeserver; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import flex.messaging.io.*; import flex.messaging.io.amf.*; import java.util.HashMap; import java.util.Map; import java.util.zip.DeflaterOutputStream; /** * * @author mumuyu99 */ public class socketServer implements Runnable { public static void main(String[] args) { start(); } //****************************************************************// private static boolean isRunning = false; //服务器运行标志 ServerSocket ss = null; //socket连接 int userIndexNumber; //用户索引号 int userCount; //房间人数 //Iterator it=null; //迭代器 //*************************消息协议*********************************// private byte type; //消息类型 private byte mainCmd; //消息主命令 private byte subCmd; //消息子命令 private byte[] data; //消息数据 private SerializationContext context = new SerializationContext(); public static void start() { socketServer server = new socketServer(); // server.heardHeart(); new Thread(server).start(); System.out.println("服务器打开"); } public void run() { try { isRunning = true; try { ss = new ServerSocket(9999); } catch (IOException ex) { System.out.println(ex.toString()); } Socket socket; while (isRunning) { socket = ss.accept(); handleCmd(socket); } } catch (IOException ex) { System.out.println(ex.toString()); } } private void handleCmd(Socket inComing) { try { DataInputStream dis = new DataInputStream(inComing.getInputStream()); DataOutputStream dos = new DataOutputStream(inComing.getOutputStream()); System.out.println("准备好接收数据!"); byte[] lang = new byte[dis.available()]; dis.read(lang); System.out.println(new String(lang, "utf-8")); Amf3Output out = new Amf3Output(context); DeflaterOutputStream stream = new DeflaterOutputStream(dos); out.setOutputStream(stream); Map map = new HashMap(); String[] arr = "1,2,3,4,5".split(","); map.put("datas", arr); map.put("userName", "mumuyu99"); map.put("fullName", "最新消息"); out.writeObject(map); stream.finish(); dos.writeUTF("你好啊"); dos.flush(); } catch (IOException ex) { System.out.println(ex.toString()); } } }
Flex端的代码如下:
<?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/halo" minWidth="1024" minHeight="768" > <fx:Script> <!--[CDATA[ import flash.net.Socket; import mx.controls.Alert; private static var socket:Socket; private var byteaa:ByteArray; private function connectSocket():void{ socket=new Socket("localhost",9999) //socket.objectEncoding=ObjectEncoding.AMF3; var byteArray:ByteArray=new ByteArray(); var s:String="hello word!" byteArray.writeUTFBytes(s); socket.writeBytes(byteArray,0,byteArray.length); socket.writeMultiByte(s,"UTF-8"); socket.flush(); byteaa=new ByteArray(); socket.addEventListener(ProgressEvent.SOCKET_DATA,loaderHandler); socket.addEventListener(IOErrorEvent.IO_ERROR,errorIO); socket.addEventListener(Event.CONNECT,connectStart); } private function connectStart(event:Event):void{ Alert.show("连接成功!"); } private function errorIO(event:IOErrorEvent):void{ Alert.show("连接不到数据源!"); } private function loaderHandler(event:ProgressEvent):void { // var intervalId:uint = setTimeout(laoderInit,100); laoderInit(); } private function laoderInit():void{ var start:Number=getTimer(); while(socket.bytesAvailable>0){ socket.readBytes(byteaa); } byteaa.uncompress(); var obj:Object = byteaa.readObject(); Alert.show(obj.fullName); var end:Number=getTimer(); Alert.show("耗时:" + (end - start) + "毫秒"); } protected function button1_clickHandler(event:MouseEvent):void { connectSocket(); } ]]--> </fx:Script> <s:Button x="190" y="370" label="连接" enabled="true" click="button1_clickHandler(event)"/> </s:Application>
发表评论
-
Flash Builder 4 安装SVN
2010-11-28 00:48 1426选择菜单 帮助–> 安装新软件 在使用里键入地址: ... -
FLEX 为DataGrid 添加序号列(1)
2010-05-11 10:49 4035下面的实现方式,基本思路就是用itemrender访问父文档的 ... -
Flex设定Textinput圆角矩形输入框(转)
2010-05-07 20:20 4920(英文)原文地址 1、以下的例子展示如何通过设置focus ... -
Flex程序启动事件的顺序initialize、creationComplete、applicationComplete(转)
2010-05-06 20:01 2309<?xml version="1.0&qu ... -
用Flex Builder创建第一个Flex AIR程序
2010-04-30 10:20 1684创建一个AIR工程 先安装好Adobe AIR运行时以及设置 ... -
Flash的事件机制
2010-04-26 23:52 11571.先说一些基础的东西 ... -
target和currentTarget的区别
2010-04-26 23:08 1543target和currentTarget的区别 ... -
跨域策略文件——解决Flash安全沙箱问题
2010-04-26 16:20 3533一、基础解说 用 Flash 文档访问另一个域中的数据。F ... -
Flash Builder 入门学习资源
2010-04-06 13:48 2021Flash Builder 资源 Flash Builder ... -
Flex 开源框架及工具 整理和更新转帖
2010-03-23 13:06 11091.Caringorm 2.PureMVC 3.Mode ... -
Flex的通信方式(N)——URLLoader
2010-02-10 16:01 1495URLLoader交互的例子 < ... -
Flex设置TextInput的默认焦点、切换焦点的例子
2009-11-29 11:03 86051、首先,在加载swf的页面上写下下面的代码,控制页面将焦点设 ... -
Flex与Flash的交互_2(深层对象交互示例)
2009-11-25 11:37 1872Flex端程序 1、主程序文件TestFlex_Flash ... -
Flex与Flash的交互_1(初级简单示例)
2009-11-25 10:26 3186其实就是Flex将Flash以资源的形式加载到Flex项目中, ... -
Flex的通信方式(五)——HTTPService_3
2009-11-23 19:42 2249转载自:http://hi.baidu.com ... -
Flex的通信方式(四)——HTTPService_2
2009-11-23 19:08 1497转载自:http://cs.ntsky.com/flex3-j ... -
Flex的通信方式(三)——HTTPService_1
2009-11-18 13:38 1537MXML代码: <?xml version ... -
Flex的通信方式(二)——Webservice-2
2009-11-18 12:47 1113这里主要介绍Webservices使用AS代码的操作方法 A ... -
Flex的通信方式(一)——Webservice-1
2009-11-18 12:12 2130flex与Webservices与简单通信 1、格式: f ... -
在ActionScript工程中中实现绑定
2009-09-28 15:17 1284在ActionScript中实现绑定 这种方法是使用mx.bi ...
相关推荐
4. **客户端集成**: 在Flex项目中,使用`RemoteObject`或`WebService`组件来与服务端进行AMF通信。 5. **数据交换**: 设计并实现服务端和客户端的数据模型,确保AMF能够正确地序列化和反序列化对象。 6. **测试和...
而"easyamf"可能是一个简化AMF使用的库或工具,帮助开发者更容易地集成AMF到他们的项目中。 7. 实战经验:在实际项目中,开发者可能需要处理如数据推送、实时更新等问题。Flex与AMF的组合可以实现WebSocket或者Long...
本教程将详细介绍如何抓取使用AMF协议的Flex页面数据,并涉及模拟登录和页面抓取的相关知识。 1. **AMF简介** - AMF是一种高效的数据序列化格式,用于在Flex客户端和服务器之间传输数据。它比XML或JSON更快,因为...
标题中的“Flex + Zend AMF + MYSQL + WAMP 新手指南”揭示了本文将要讨论的是一个关于构建基于Web的应用程序的技术栈,其中包含了前端、后端和数据库的相关技术。让我们逐一深入理解这些技术。 1. **Flex**: ...
使用AMF.NET进行开发时,开发者可以创建服务端的方法,这些方法会被Flash或Flex客户端调用。AMF.NET会自动处理AMF数据的包装和解包,简化了服务器端的实现。同时,由于AMF的二进制特性,相比基于文本的协议(如HTTP...
flex-messaging-core-amf1.7
Java是一种广泛使用的后端编程语言,而Flex则是一种基于ActionScript的前端框架,主要用于构建交互性强、图形用户界面丰富的Web应用。当我们谈论"Java Flex jar包"时,这通常是指使用Java来与Flex应用进行交互,通过...
Struts Flex结合使用是一种在Java Web开发中创建富互联网应用程序(RIA)的解决方案。Struts是Apache软件基金会下的一个开源MVC框架,主要用于构建企业级的Web应用,而Flex是Adobe开发的一种基于ActionScript的RIA...
AMF,全称为Action Message Format,是一种数据序列化协议,主要在Adobe的Flex、Flash Player以及服务器端技术如Adobe LiveCycle Data Services等中使用。它允许应用程序之间高效地传输复杂的数据结构,包括对象、...
"amf" 标签表明了这个项目涉及到AMF协议的使用,而 "flex" 则指的是Adobe Flex,这是一个用于构建RIA的开发工具和框架,其客户端应用程序通常使用AMF与服务器通信。 【压缩包子文件的文件名称列表】: 1. **index....
Flex应用程序通常使用ActionScript编程语言,并基于Flash Player或Adobe AIR运行时环境。Java则是一种广泛使用的面向对象的编程语言,尤其在企业级应用开发中占据重要地位。 标题"flex 和 java交互"指出了一个关键...
AMF3(Action Message Format version 3)协议是Adobe公司为Flash Player和Flex应用程序之间通信设计的一种二进制数据交换格式。它旨在提高数据传输效率,同时保持足够的灵活性以适应不同类型的复杂数据结构。AMF3...
开源AMF协议解析封装主要涉及的是Action Message Format (AMF)技术在C#语言环境...通过理解和使用该项目,开发者可以深入理解AMF协议,并掌握如何在C#中实现这种协议,这对于构建富互联网应用程序(RIA)具有重要意义。
在Flex中,CRUD操作通常与后端数据服务交互,如使用AMF(Action Message Format)或者Web服务(如SOAP或RESTful API)来传递数据。以下是对这个示例项目的详细解析: 1. **创建(Create)**:在Flex中,创建新记录...
Flex 应用可以发送 AMF(Action Message Format)或 SOAP 请求到 JSP,JSP 处理请求并返回 JSON 或 XML 数据。Flex 接收到数据后,根据数据更新界面,实现了前后端的数据交换。 7. **优点**:Flex 与 JSP 结合提供...
这是一个flex的lib库,方便开发者迅速开展amf连接操作。
AMF3(Action Message Format version 3)是Adobe公司开发的一种二进制数据序列化格式,主要用于Flash Player和Flex应用程序与服务器之间的数据交换。在C++编程环境中,AMF3库可以帮助开发者高效地处理这种数据格式...
1. **二进制格式**:AMF使用二进制编码,使得数据传输更紧凑,降低了网络带宽需求,提高了传输效率。 2. **类型感知**:AMF能识别并编码多种数据类型,如数字、字符串、日期、对象、数组等,无需额外的元数据。 3. *...
功能: 支持AS3的ByteArray序列化对象的AMF格式编码、解码( readObject、writeObject )。 支持AS3的ByteArray的compress、uncompress压缩算法:...为方便想了解AMF格式及封包的坛友分析解码AMF数据资料使用。
Flex支持与各种数据源的通信,如AMF、SOAP、REST等,可以方便地调用Web服务,获取和更新远程数据。 9. **动画和效果** 使用Flex,开发者可以创建复杂的动画效果,增强用户体验。Timeline和Transitions类库提供了...