先看看C的代碼:
#include <stdlib.h>
#include <stdio.h>
#include "AS3.h"
//供AS調用的函數,args即為AS傳入給C函數的參數
static AS3_Val myfun(void *self, AS3_Val args)
{
//提取參數
int a, b;
AS3_ArrayValue(args, "IntType, IntType", &a, &b);
//計算a, b之和,轉換為AS裡的Int數據類型並返回之
return AS3_Int(a+b);
}
int main()
{
//定義一個公開給AS調用的函數
AS3_Val myMethod = AS3_Function(NULL, myfun);
//創建一個持有該函數引用的Object
AS3_Val result = AS3_Object("myfun:AS3ValType", myMethod);
//Release
AS3_Release(myMethod);
//告知初始化完成,此方法不會返回
AS3_LibInit(result);
//永遠不會執行到這裡
return 0;
}下面是AS代碼:
package{
import flash.display.Sprite;
import flash.utils.ByteArray;
import cmodule.test.CLibInit;
public class Test extends Sprite
{
public function Test()
{
var loader:CLibInit = new CLibInit();
var lib:Object = loader.init();
trace(lib.myfun(10, 20));
}
}
}OK,然後編譯一下:C: gcc test.c -O3 -Wall -swc -o test.swc
AS: mxmlc -library-path+=test.swc Test.as
0 意見