使用AS3_Val填充C数组

时间:2010-12-22 23:56:40

标签: flash actionscript-3 alchemy

当从Flash接收数组时,在C中,如果该数组的大小不是常数但值类型是什么,我如何填充该数组?

在Alchemy的文档中,给出的例子是:

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

但这意味着如果我的数组大小为100,我需要创建一个描述每个单元格类型的字符串。

是不是有办法通过说“填充以下'int * array'之类的东西填充它,使用来自此AS3_Val int数组的前100个值?”

1 个答案:

答案 0 :(得分:0)

AS3阵列的n th 元素可以通过名称等于n的属性访问。

例如,这将跟踪9001

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

您可以利用此行为从Alchemy中随机访问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);
  }
}

类似的东西。