(转)[ActionScript 3] Google-ProtoBuf for AS

最近因为项目的须要,研究了一下protobuf。在这里分享一下经验,具体介绍网上也有很多,能够百度先了解一下。

ProtoBuf在as中主要就是序列反序列化的做用,咱们主要用它来代替amf,由于像c++这类语言不支持amf。

1.AS有两种方案,一种是官方的,仍是一种是国人写的。这里先介绍官方的。

首先介绍一下proto文件,这个文件主要用来定义描述文件,做用是生成先后台两种类,这样能够省去一边的工做,语法比较简单,这里就不介绍。

2.把proto文件生成as文件,这里须要编译器proto.exe,默认支持c++,java,python.咱们得本身安装vs来编译产生支持as的编译器,具体过程就再也不描述,能够看protobuf-actionscript3中的说明。能够点击这里下载我已经编译好的程序。

下面介绍编译过程,使用cmd命令

protoc.exe  –proto_path= c:\ –as3_out=c:\ options.proto

参数说明

–proto_path   proto文件的目录

–as3_out   输出目录

最后跟proto文件名,在输出目录下产生类文件。 

protoc.exe  –proto_path= c:\ –as3_out=c:\ options.proto

参数说明 
–proto_path   proto文件的目录
–as3_out   输出目录
最后跟proto文件名,在输出目录下产生类文件。只要将类文件拷贝到项目里边就能够使用了,记得导入 <ignore_js_op>protoc.rar (198.2 KB, 下载次数: 861) 

3.使用方法,导入swc文件.

   var byte:ByteArray=new ByteArray;
   message.writeToDataOutput(byte);//序列化到byte中;

  var msg:Msg=new Msg;

  msg.readFromDataOutput(byte);//反序列化message.

使用ProtoBuf后能够跟c++等语言直接传输对象,而没必要关心内部的细节,使开发更为方便。我封装了一套socket的类库,能够直接下载来使用。
<ignore_js_op> NetEngine.rar (514.52 KB, 下载次数: 927) 

国人写的那套as的方案protoc-gen-as3具体没有深刻研究,区别只是它的编译方式是使用插件方式,因此不用本身再编译编译器,使用官方的就好了。具体看它里面的帮助,其它地方应该大同小异。php