2010-12-22 64 views
1

從C中接收數組時,如何在C中的大小不是常量但數值類型是?時填充該數組?使用AS3_Val填充C數組

在鍊金術的文件,給出的例子是:

S3_ArrayValue(arr, "IntType, StrType, DoubleType", &arg0, &arg1, &arg2); 

但是,這意味着如果我在我的數組大小是100,我需要創建描述每個細胞類型的字符串。

是不是有一種方法來填充它說:「填充以下的'int *數組',用這個AS3_Val int數組的第一個100值?

回答

0

n th AS3數組的元素可以通過名稱等於n的屬性來訪問。

例如,這將跟蹤9001

var arr:Array = new Array(); 
arr[47] = 9001; 
trace(arr["47"]); 

你可以利用這種行爲來獲得從鍊金術到AS3數組隨機訪問:

AS3_Val arr = AS3_Array(""); 
AS3_SetS(arr, "47", AS3_Int(9001)); 
AS3_Trace(AS3_GetS(arr, "47")); 

對於隨機訪問,你需要將索引轉換爲字符串:

AS3_Val AS3_ArrayGet(AS3_Val arr, int index) { 
    if (index >= 0) { 
    // static_assert(sizeof(int) <= 4); 
    char buffer[11]; 
    return AS3_GetS(arr, itoa(index, buffer, 10)); 
    } 
    return AS3_Undefined(); 
} 

void AS3_ArraySet(AS3_Val arr, int index, AS3_Val val) { 
    if (index >= 0) { 
    // static_assert(sizeof(int) <= 4); 
    char buffer[11]; 
    AS3_SetS(arr, itoa(index, buffer, 10), val); 
    } 
} 

類似那。