- 浏览: 1427908 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
Flash加载外部http数据有很多封装方式,常用的数据封装格式有xml SOAP、json、webService和amf等。其中前面三个都是互联网通用的基于字符串的格式,而AMF是Adobe独家开发出来的封装格式,它和其他格式不一样的地方是基于二进制的,而且这种格式是Flash可以读取的。它的优点也显露出来了:1、由于基于二进制,而且没有像xml那样很多的冗余数据,传输同样的数据量体积会小很多。2、数据传输到Flash端可以直接读取,无需进行字符串解释等反序列化过程,效率也提高了。(amf有两种格式:AMF0和AMF3;Flash8之前的版本只支持AMF0,Flash9支持两种格式、不过flash使用AMF3应该效率会高点,因为AMF0是兼容之前版本用的)
然而amf是Adobe独家开发的,如果不清楚它的数据封装格式就无法用其它后台语言将数据封装成amf再传输到flash那里。然而目前有很多开源的框架支持amf,如php的amfphp、java的openamf等。
Adobe前段时间发布一个名为“BlazeDS”的开源的Flash数据访问项目,各位可以去adobe官方网站下载研究。它的功能和adobe livecycle data services类似,只是提供开源并且少了rtmp通信方面的功能。
关于AMF3封装的类就存在BlazeDS的flex.messaging.io.amf包里面,其中几个比较重要的类有(Amf3Output、Amf3Input等,如果想兼容flash8之前版本请使用Amf0Output和Amf0Input)。
如果各位想用AMF3格式又不想使用Flex的remoting功能,可以手动封装AMF格式。下面简单介绍一下怎样在java中amf的封装:
Java端代码:(封装一个Object对象,Object保存了name=weni;age=27;web=www.weni.cn 以及一个长度为10000的数组,然后将对象保存到一个文本文件里面)
SerializationContext serializationContext=new SerializationContext();
Amf3Output amfOut = new Amf3Output(serializationContext);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
DataOutputStream dataOutStream = new DataOutputStream(outStream);
amfOut.setOutputStream(dataOutStream);
HashMap<String, Object> map=new HashMap<String, Object>();
Double[] arr=new Double[10000];
for(int index=0;index<10000;index++)
{
arr[index]=Math.random();
}
map.put("arr", arr);
map.put("name", "weni");
map.put("age", "27");
map.put("web", "www.weni.cn");
try
{
amfOut.writeObject(map); //写入java HashMap对象,会自动转换成Flash的Object对象
dataOutStream.flush();
} catch (IOException e)
{
e.printStackTrace();
}
byte[] messageBytes = outStream.toByteArray();
try
{
FileOutputStream os;
OutputStreamWriter ow;
BufferedWriter out;
os = new FileOutputStream("D://test.txt");
ow = new OutputStreamWriter(os);
out = new BufferedWriter(ow);
os.write(messageBytes);
os.flush();
os.close();
System.out.println("OK");
}catch(Exception e)
{
System.out.println("error :" + e);
}
客户端读取代码:
var loader:URLLoader=new URLLoader();
loader.load(new URLRequest("D://test5.txt"));
loader.addEventListener(Event.COMPLETE,onComplete);
loader.dataFormat=URLLoaderDataFormat.BINARY;
private function onComplete(evt:Event):void
{
var start:Number=getTimer();
var byte:ByteArray=loader.data as ByteArray;
var obj:Object=byte.readObject(); //读取出来的对象
var end:Number=getTimer();
trace("耗时:"+(end-start)+"毫秒")
trace(obj.name,obj.age,obj.arr.length)
}
发表评论
-
微信小程序--搜索框滚动到顶部时悬浮
2018-12-06 14:44 3077<scroll-view style="w ... -
绘制音乐的频谱图(使用Analyser节点)(转)
2018-11-19 15:19 1254<canvas id="canvas&quo ... -
nw 使用手记,用js 写桌面程序
2018-11-08 09:37 439安装 node.js , 将npm 添加至系统 ... -
解除网页右键限制和开启网页编辑状态的js代码
2018-04-04 04:23 1901当访问页面右键被限制了怎么办? 很好办!将以下代码添加进收 ... -
关于Cocos2dx-JS在iOS8以上系统调用OpenGL进入后台时崩溃的解决办法
2015-11-02 08:48 4529这次发布新版本后没有预料到的crash是下面这些,并且在遇到 ... -
datatables官方例子(demo)
2014-03-17 17:34 26443http://datatables.net/release ... -
在新窗口打开一个链接
2013-06-01 23:19 703<html> <body> ... -
2345赚外快
2012-07-17 10:15 7各位电脑同行们,电脑爱好者们: 你手上有充足的客户资源么 ... -
asp
2010-02-25 13:41 933<% set rs=serve ... -
Div+CSS布局入门教程——页面制作-用好border和clear
2008-09-11 13:05 1381这一节里面,主要就是 ... -
Div+CSS布局入门教程——页面布局与规划
2008-09-11 13:03 1453在网页制作中,有许多的术语,例如:CSS、HTML、DHTML ... -
Div+CSS布局入门教程——写入整体层结构与CSS
2008-09-11 13:02 1203接下来我们在桌面新建一个文件夹,命名为“DIV+CSS布局练习 ... -
Div+CSS布局入门教程——页面顶部制作
2008-09-11 13:02 1206当我们写好了页面大致的DIV结构后,我们就可以开始 ... -
javascript小技巧<七>
2008-08-31 13:13 1038//插入文字 document.onclick =functi ... -
javascript小技巧<六>
2008-08-31 13:07 1150小技巧//设置光标位置 function getCaret( ... -
javascript小技巧<五>
2008-08-31 12:59 1210//下载文件 function DownURL(strRemo ... -
javascript小技巧<四>
2008-08-31 12:51 902//屏蔽按键 <html><head&g ... -
javascript小技巧<三>
2008-08-31 12:44 989//网页是否被检索 <meta name="R ... -
javascript小技巧<二>
2008-08-31 12:35 953//各种尺寸 s += "\r\n网页可见区域宽 ... -
javascript小技巧<一>
2008-08-31 12:28 968事件源对象event.srcElement.tagNameev ...
相关推荐
自己写的flash webgame 搭建的java 后台 解决了安全沙箱问题,可以进行聊天,和后台java函数的请求及响应。amf3 编码。
amf c# flex服务端协议解析和封装。
支持AMF格式的通信封包编码、解码、向AMF服务端发送请求、返回AMF数据解析。 支持RTMP封包编码、解码。 支持Flex外部化类的AMF编码、解码。 支持解压还原LZMA算法压缩过的SWF文件(文件头三字节为:ZWS的 *.SWF...
抓取AMF协议的flex页面,支持模拟登录和页面抓取。
java运行依赖jar包
用于分析AMF数据分析的工具,使用简单方便,帮助提高AMF分析效率
之前测试解析amf3协议数据进行树化便于观察的,解析的有可能不是很完美,正常用来观察里面的数据没什么问题
一个用C++编写的,amf3协议解析模块,可以实现flash通信协议的解析
AMF3 C++ 源码 修改版 支持序列化和对象化的AMF3解析
amf3 的格式说明,英文版,做rtmp协议或者做与flash数据交互服务器端必备的参考
Adobe Flash AMF3 specification for flash player 9 and above serialization and communication.
基于AMF的Android数据通信.pdf
AMF 是一种压缩二进制格式 用来系列化ActionScript对象图 一旦系列化 AMF编码对象图可以用来持久化和跨会话检索应用程序的公开状态或者允许二端通过交换强类型数据进行通信">Action Message Format AMF3中英文对照 ...
AMF3 C++ AMF3 C++ 源码库码库
amf3_spec amf3_spec amf3_spec amf3_spamf3_specec
《RTMP协议中AMF的定义》,原名《TheAMF》英文版本。 内容简介: The AMF object is used for the sending and receiving of all video/audio data. After the initial handshake, all objects sent use the AMF ...
AMF3协议中文版定义.pdf
openamf openamf-1.0RC12 openamf实例 openamf+flash实例 openamf最完整实例java + flash+eclipse工程源码
从PHPAMF提取并修改测试可用的AMF反解代码 ... //$data为AMF数据 $deserializer = new AMFDeserializer($amf->rawData); $deserializer->deserialize($amf); $AMF = $deserializer->getAMFObject(); //解码结果
PKG解析amf数据分析器_v30,可一键读取PKG,解密PKG内容