1

フラッシュから配列を受け取るとき、C で、そのサイズが一定ではなく、値の型が一定の場合、その配列をどのように設定しますか?

Alchemy のドキュメントでは、次の例が示されています。

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

ただし、これは、配列のサイズが 100 の場合、各セル タイプを説明する文字列を作成する必要があることを意味します。

「この AS3_Val int 配列の最初の 100 の値で、次の 'int * 配列' を埋めてください」のようなものを入力する方法はありませんか?

4

1 に答える 1

0

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);
  }
}

そんな感じ。

于 2010-12-24T10:09:41.327 に答える