AS3 配列の n番目の要素には、名前が 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);
}
}
そんな感じ。