- 浏览: 593599 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
在AS3中另外一个比较涉及底层操作的类是二进制类ByteArray。这个类管理了一系列二进制数据。可以达到在字节层上的控制。二进制数据在网络传输时虽然在工作效率下有所下降,但却是最节省网络带宽的传输方式。 一,简介: ByteArray输入flash.util包,直接继承自Object对象。具有6个公共属性和33个公共方法。其中大部分是不同数据类型的写入和读取write&read。对ByteArray的操作是基于一个指针position的。 二,公共属性: 1,可用字节数(数组长度) 一个只读属性,返回了当前指针position到ByteArray末尾的可读数据长度,避免了读取超出范围的数据而造成的Error。 2,二进制数据格式 是一个静态变量,定义了ByteArray的写入或读取数据时使用的格式。通常使用ObjectEncoding来设置,具有三个值AMF0(以AS1,AS2格式序列化对象),AMF3(以AS3格式序列化对象),DEFAULT(按FlashPlayer默认最新的格式序列化对象)。 3,写入字节的顺序 也是一个静态变量,定义了字节的顺序。通常使用Endian类设置,具有两个值BIG_ENDIAN(最高有效字节位于字节序列的最前面)和LITTLE_ENDIAN(最低有效字节位于最前),这个主要用于跟服务器端匹配即可。 4,ByteArray长度 ByteArray的总长度,以字节为单位。 5,读取格式 这个就是之前提到的数据写入或读取ByteArray使用的格式,主要还是分AS1,AS2写入还是AS3写入。使用ObjectEncoding来设置。 6,指针位置 移动当前读取到ByteArray的位置。 三,公共方法: 其中大部分都是读写方法READ/WRITE,其中READ方法14个,WRITE方法12个(竟然不相同?到时要好好注意)。剩余7个其他方法。 1,构造函数 没什么特别的,连参数都没有··囧 2,清除 清楚ByteArray占用的内存。将长度和position设为0. 3,压缩方法A compress(algorithm:String):void 参数是一个String类型,通过flash.util.CompressionAlgorithm定义。压缩之后数组变为新长度,position跳到ByteArray末尾。FlashPlayer中运行不能传参数,默认为zlib压缩算法。 4,压缩方法B(AIR only) 另外一种压缩方法,使用的是deflate算法(天知道是什么算法)。压缩之后数组变为新长度,position跳到ByteArray末尾。 5,压缩方法A解压方法 解压算法要与压缩算法相对应。FlashPlayer中运行不能传参数,默认为zlib压缩算法。压缩之后数组变为新长度,position跳到ByteArray开头。 6,压缩方法B解压方法(AIR only) 解压通过deflate方法压缩过的ByteArray。压缩之后数组变为新长度,position跳到ByteArray开头。 7,转为字符转方法 将ByteArray转化为字符串形似。 接下来就是成对出现的READ/WRITE方法,要注意指针position的位置变化,当位置不足以读取时会引发EOError。 8,读取Boolen值。 读取一个字节,当字节不为0时返回true,字节为0时返回false。 9,写入Boolen值。 writeBoolean(value:Boolean):void 当value为true时写入1,当value为false时写入0。 10,读取带符号字节 返回值在-128~127之间,即256个范围(一个字节为8位2进制位)。 11,写入带符号字节 参数是一个32位的int整数,只有低8位才会被写入。高24位被忽略。 12,读取字节 readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void 第一个参数是将读取出的字节写入第一个参数指定的ByteArray对象中。 后两个即指针position的偏移位置,以及读取的长度(0为从position位置开始全部读取)。 13,写入字节 writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void 从指定的ByteArray对象bytes中读取一定长度的字节流,写回ByteArray中。 后两个参数定义了位置。 14,读取64位浮点数 就是读取一个双精度64位的带小数的浮点数(好绕口,浮点数就是带小数点的意思啊) 15,写入64位浮点数 writeDouble(value:Number):void 将一个64位浮点数写入ByteArray 16,读取32位浮点数 读取一个单精度32位的浮点数 17,写入32位浮点数 writeFloat(value:Number):void 将一个32位浮点数写入ByteArray 18,读取带符号整数 从字节流中读出32位带符号整数 19,写入带符号整数 将32位带符号整数写入ByteArray 20,从字符集中读取字符串 readMultiByte(length:uint, charSet:String):String 这个字符集不太懂是什么意思,可选的值有"shift-jis","cn-gb"等 21,将多字节按指定字符集形式写入ByteArray writeMultiByte(value:String, charSet:String):void 与上面的对应。 22,读取对象 readObject():* 从ByteArray中按AMF格式读取一个对象OBJECT 23,写入对象 writeObject(object:*):void 将一个对象写入ByteArray中 24,读取一个16位整数 从ByteArray中读取一个16位带符号的整数 25,写入一个16位整数 writeShort(value:int):void 将一个整数int写入ByteArray中,忽略高16位。 26,读取无符号字节 27,读取无符号16位整数 28,读取无符号32位整数 29,写入无符号32位整数 writeUnsignedInt(value:uint):void 30,读取一个UTF-8字符串 31,写入一个UTF-8字符串 这个会写在ByteArray里写入一个字节表示字符串长度(16字节),然后再写入字符串 32,读取指定长度的UTF-8字符串 readUTFBytes(length:uint):String 33,写入指定长度的UTF-8字符串 writeUTFBytes(value:String):void 与writeUTF很相似,但是不会自动生成1个字节保存字符串长度 总结: 任何对ByteArray的操作都会引起指针position的变化。其中共有13对读写方法,分别是:Boolen,Byte,Bytes,Double,Float,Int,MulitByte,Object,Short,UnsignInt,UTF,UTFBytes,另外还有2个单独读取的UnsignByte,UnsignShort。 当然具体对ByteArray的操作还要GOOGLE各种文件的格式来进行编码与解码,仅仅一个类并做不了什么。但先对整个类有个整体的了解也是好的。
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 681as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 845//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 1024华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1510还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 1008AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1475在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1105大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 916AS3的安全沙箱的确是 ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 1021先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 957想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 842使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1670一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 939VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1293最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 829作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 729Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 864因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1359二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 933什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1457Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
在描述中提到的博客链接虽然没有提供具体内容,但通常博主会详细介绍如何在Flex中封装ByteArray并发送到Struts2的Action,以及Struts2如何接收和处理这些二进制数据。通常,这种上传涉及到的数据类型可能是图像、PDF...
### 通过ByteArray播放MP3的方法解析 在Adobe Flash平台中,使用`ByteArray`来加载并播放MP3文件是一项常见的需求,尤其是在需要动态加载音频资源的应用场景下。本文将详细介绍如何利用ActionScript 3 (AS3) 语言...
本篇将详细介绍如何使用C#实现Image与Byte Array之间的转换,并基于提供的类库源码进行解析。 首先,`ImageConverter.cs` 文件很可能包含了实现这两个转换的核心代码。在这个类库中,通常会有一个名为 `...
本文将深入探讨Flex中图片调用的几种方法,并重点介绍一种特殊的方法——通过`ByteArray`方式将图片编译进SWF文件中,使得SWF文件能够独立存在。 #### 图片调用方法概述 在Flex中,常见的图片加载方式主要包括: ...
### Activiti工作流23张表详细介绍 #### 一、Activiti数据库表结构概述 Activiti是一款开源的工作流引擎,其强大的流程管理能力使得它在众多业务场景中得到广泛应用。为了更好地理解Activiti如何存储流程数据,本...
Activiti数据库表结构介绍 Activiti是一个流程引擎,用于管理和执行业务流程。为了存储和管理流程相关数据,Activiti使用了多个数据库表来实现。这篇文章将简要概括Activiti数据库表结构,对于初入Activiti的同学来...
除了上述介绍的功能外,`QByteArray`还提供了更多的方法和操作符,例如: - **比较**:`==` 和 `!=` 操作符可以用来比较两个`QByteArray`对象。 - **搜索**:`indexOf()` 和 `lastIndexOf()` 方法可以用来查找特定...
ByteArrayInputStream和ByteArrayOutputStream是Java IO体系中两个非常实用的类,它们分别用于处理字节数组的输入和输出。 **ByteArrayInputStream介绍** ByteArrayInputStream是InputStream的子类,它允许我们将...
本文提出了一套针对Webgame客户端通信VO的设计方案,通过对父类Message、通信连接类Connection、VO身份识别配置类VOIdentifyMap以及Socket命令类SocketCommands的详细介绍,旨在为Webgame开发者提供一种高效、可靠的...
通过以上介绍,我们可以看出,在Flash中实现摄像头拍照和上传功能需要综合运用Camera类、NetStream类、BitmapData类以及URLRequest类等多个组件。虽然随着HTML5和WebGL技术的发展,Flash的应用场景逐渐减少,但了解...
根据给定的信息,本文将对`HttpHelps`类进行详细的解析,并重点介绍其实现HTTP访问的方法、原理以及具体的代码实现细节。 ### HttpHelps 类概述 `HttpHelps` 类是一个封装了HTTP请求功能的类,它支持通过POST或GET...
ByteArray 类、IDataInput 接口和 IDataOutput 接口是 ActionScript 3.0 中处理二进制数据的核心组件。AMF3 提供了一种有效的方式来将数据编码为 ByteArray,然后通过 IDataInput 或 IDataOutput 接口进行读取或写入...
下面将详细介绍这一主题,以及如何在C#中进行这些转换。 1. 字节数组的基础 字节数组(byte[])是.NET框架中用于存储原始二进制数据的容器。它们通常用于读写文件、网络传输或处理二进制数据流。在C#中,我们可以...
本文将详细介绍如何使用`HttpWebRequest`进行GET和POST操作,以及在WinForm程序中实现这些功能的步骤。 首先,了解HTTP协议的基础知识至关重要。HTTP是超文本传输协议,是互联网上应用最为广泛的一种网络协议,主要...
- `ByteArray` 类用于处理二进制数据。 - 它提供了读写原始数据的能力,这对于处理多媒体数据非常有用。 4. **Client Class** - `Client` 类用于代表连接到服务器的客户端。 - 可以通过这个类来发送消息或数据...
本文将详细介绍如何使用QT来设计一个自定义协议,以解决TCP粘包和拆包的问题。 首先,我们需要理解TCP粘包和拆包的原因。TCP为了提高传输效率,会将较小的数据包合并成一个大包发送,或者将一个大的数据包拆分成多...
本篇文章将详细介绍如何通过byte数组以流的形式创建Bitmap,并且结合进度条实现更友好的用户体验。 首先,理解Bitmap的创建方式。Bitmap可以使用多种方法创建,如直接从资源、文件或网络加载。在处理大量数据时,如...
本教程将介绍如何使用HttpWebRequest来登录网站并保存Cookie,从而实现手机归属地的查询功能。 首先,我们需要理解HttpWebRequest类是.NET Framework提供的一个强大工具,它允许我们发送HTTP请求到服务器,并获取...
然而,本教程将介绍一种方法,让你能够实现在客户端本地进行录音,而无需依赖FMS或其他服务器组件。这使得应用更具灵活性,用户可以直接保存录音文件至他们选择的计算机目录。 首先,AS3中的录音涉及到的声音处理...
本篇文章将详细介绍如何使用VB.NET实现自定义的数据压缩与解压功能。 #### 二、压缩与解压函数的实现 根据提供的代码片段,可以看到作者实现了两个主要的函数:`A_pCompressByte` 和 `A_pDeCompressByte`。这两个...