基於 Alchemy 實現 AS3 與 C++ 互動(1)C++ 回傳 Array 給 AS3
基於 Alchemy 實現 AS3 與 C++ 互動(1)C++ 回傳 Array 給 AS3
- 作者:柳大·Poechant
- 郵箱:zhongchao.ustc@gmail.com
- 部落格:blog.csnd.net/poechang
- 日期:March 26th, 2012
0 Alchemy 的使用
請參考 Adobe 官網,這裡不贅述。
1 C++ 程式碼
1.1 介面函式
// AS3 Array 以引數形式傳入
AS3_Val test(void *data, AS3_Val args)
{
// 建立一個陣列
int array_size = 3;
int array_c[array_size];
array_c[0] = 1;
array_c[1] = 2;
array_c[2] = 3;
// 從引數獲取 AS3 Array
AS3_Val asArray = NULL;
AS3_ArrayValue(args, "AS3ValType", &asArray);
// 得到 Array 的 push 方法
AS3_Val push_function = AS3_GetS(asArray, "push");
// 呼叫上面得到的方法
for (int i = 0; i < array_size; ++i)
{
// 一定要建立 Array 物件,然後把 Array 物件 push 到結果 Array中!!!
AS3_Val int_to_push = AS3_Array("IntType", array_c[i]);
AS3_Call(push_function, asArray, int_to_push);
AS3_Release(int_to_push);
}
AS3_Release(push_function);
return asArray;
}
1.2 封裝、暴露
int main()
{
AS3_Val testFun = AS3_Function(NULL, test);
AS3_Val _API = AS3_Object("test:AS3ValType", testFun);
AS3_Release(testFun);
AS3_LibInit(_API);
return 0;
}
2 用 Alchemy 將 C++ 編譯成 SWC
g++ test.cpp -swc -O3 -o test.swc
這個過程較慢。
3 AS3 程式碼
package
{
import cmodule.a.CLibInit;
import flash.display.Sprite;
public class test2 extends Sprite
{
private static var lib:Object = null;
public function test2():void
{
var loader:CLibInit = new CLibInit();
var lib:Object = loader.init();
var oldArray:Array = new Array();
// 呼叫 C++ 函式
var array:Array = lib.test(oldArray);
for (var i:int = 0; i < array.length; ++i)
{
trace(array[i]);
}
}
}
}
4 執行 AS3 程式
將上面生成的 test.swc 加入到 AS3 工程中,並新增路徑。然後執行。我在 Flash Buider 中的結果如下:
1
2
3
[SWF] test2.swf - 解壓縮後為 1,574,377 個位元組
[卸裝 SWF] test2.swf
-
轉載請註明來自“柳大·Poechant的CSDN部落格”:blog.CSDN.net/Poechant
-
相關文章
- 大數階乘的AS3與C++版本S3C++
- c# winform as3相互呼叫C#ORMS3
- 實現AS3的Singleton的兩種方法S3
- RH AS3 上快速實現磁碟配額(轉)S3
- 遺傳演算法與C++實現演算法C++
- 傳統C++回顧C++
- 基於Web實現遠端與硬體互動Web
- as3 時間格式工具S3
- AS3 TCP Socket 拆包S3TCP
- RedHat AS3配置 OpenLDAP(轉)RedhatS3LDA
- C++基於模板實現智慧指標C++指標
- QT QML模組與C++的互動QTC++
- C++ 實現基於TCP的聊天室C++TCP
- as2AVM1物件和as3物件的通訊物件S3
- Python與C++互動程式設計PythonC++程式設計
- 基於JFinal的實現echart與資料庫互動資料庫
- C++基礎回顧4——動態陣列C++陣列
- 基於OpenSSL的HTTPS通訊C++實現HTTPC++
- C++基於控制檯的迷宮實現(上)C++
- OC與C++ 混編的檔案互動C++
- LUA與C++互動第一篇C++
- AS3類關係圖AIR版S3AI
- c++ 鍵盤/滑鼠互動C++
- 基於聲網 Flutter SDK 實現互動直播Flutter
- 基於jwSMTP的C++傳送Email的DemoC++AI
- C++基於armadillo im2col的實現C++
- 簡單解析C++基於Boost庫實現命令列C++命令列
- C++筆記——C++基本思想與實現(一)C++筆記
- as3獲取url地址的引數S3
- AS3 程式設計師的技能樹S3程式設計師
- RedHat AS3安裝Oracle 8iRedhatS3Oracle
- 基於vlfeat的HOG特徵提取c++程式碼實現HOG特徵C++
- C++程式設計基礎實驗1C++程式設計
- 科技互動沙盤實現傳統與科技的碰撞
- rhel as3下自動啟動和關閉oracle的指令碼S3Oracle指令碼
- 基於XMPP實現android客戶端與伺服器的互動Android客戶端伺服器
- 實驗1 C++C++
- 為嘛沒有as3 /flash技術咧。。S3