首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Protocol Buffers 添加 ActionScript 3 支持完整指南

     編輯:關於C語言

背景

Protobuf 官方僅內建 Java、Python、C++ 代碼生成器。ActionScript 3 (AS3) 支持需第三方插件 protobuf-actionscript3,包含 AS3 序列化庫源碼與 C++ 代碼生成器插件。

依賴項

  • protobuf 源碼(含 protoc 編譯器工程)
  • protobuf-actionscript3:compiler/as3 目錄(生成器 C++ 代碼)+ as3-lib(運行時庫)
  • as3crypto:AS3 加密庫(序列化依賴),需下載 SWC。

編譯步驟(Windows + Visual Studio)

  1. 複製生成器代碼:將 protobuf-actionscript3/compiler/as3 整個目錄拷貝到 protobuf/src/google/protobuf/compiler/ 下,與 cpp、java、python 同級。
    目錄結構:
compiler/
  as3/
  cpp/
  java/
  python/
  code_generator.cc
  command_line_interface.cc
  ...
  1. 添加到 libprotoc 工程:打開 protobuf 解決方案 (.sln),在 libprotoc 項目中「添加現有項目」,選中 as3 目錄下所有 .cc/.h 文件。
  2. 註冊生成器:編輯 protoc 項目 main.cc,在 main() 中添加:
google::protobuf::compiler::as3::As3Generator as3_generator;
cli.RegisterGenerator("--as3_out", &as3_generator,
    "Generate ActionScript source file.");
  1. 修復 as3_file.h 包含路徑:打開 as3/as3_file.h,註釋掉原有的前置聲明命名空間塊,改為直接包含公共頭文件:
// 註釋掉:
// namespace protobuf { class FileDescriptor; namespace io { class Printer; } ... }

// 添加:
#include 
#include 
#include 
  1. 編譯 protoc.exe:Release 模式構建 protoc 項目,輸出 protoc.exe。
  2. 生成 AS3 代碼:準備 .proto 文件,執行:
protoc.exe --as3_out=./output ./your.proto
  1. 集成到 Flash/Flex 項目:將生成的 .as 文件、protobuf-actionscript3/as3-lib 源碼、as3crypto.swc 加入專案構建路徑,即可使用 MyMessage.parse(bytes)、msg.toByteArray() 等 API。

常見問題

  • 命名衝突:AS3 包名建議與 proto package 一致,避免類名重複。
  • 版本兼容:protobuf-actionscript3 基於特定 protobuf 版本(如 2.4.1/2.5.0),升級 protobuf 核心可能需同步更新插件代碼。
  • 64 位整數:AS3 無 long,生成器會映射為 int64 類(高低 32 位組合),注意精度。

總結

通過將第三方 AS3 生成器插件融入 protobuf 源碼樹、註冊到命令行界面、修復頭文件依賴,即可編譯出支持 --as3_out 的 protoc.exe。配合運行時庫與加密庫,實現 Protobuf 在 Flash/Flex/AIR 客戶端的高效二進制序列化,適合遊戲、RIA 等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved