そのため、Alchemy で適切に swc ファイルに変換できる C++ クラスのコレクションがあり、AS3 コードから公開された関数を正常に呼び出すことができます。
私が本当にやりたいのは、Box2D の b2Vec.as クラスのようなものを再作成することです。
public class b2Vec2 extends b2Base {
public function b2Vec2(p:int) {
_ptr = p;
}
public function get v2():V2 {
return new V2(x, y);
}
public function set v2(v:V2):void {
x = v.x;
y = v.y;
}
public function get x():Number { return mem._mrf(_ptr + 0); }
public function set x(v:Number):void { mem._mwf(_ptr + 0, v); }
public function get y():Number { return mem._mrf(_ptr + 4); }
public function set y(v:Number):void { mem._mwf(_ptr + 4, v); }
}
これは簡単な例ですが、私がやりたいことを示しています。C 側では、b2Vec2 は構造体です。
/// A 2D column vector.
struct b2Vec2
{
/// Default constructor does nothing (for performance).
b2Vec2() {}
....
float32 x, y;
};
したがって、この構造体の場合、b2Vec2 オブジェクトの最初の変数が float であると簡単に計算できます。これは x の値になり、Alchemy の MemUser クラス _mrf (メモリ内のポイントから fload を読み取る) を介して読み取ることができます。 (pointerAddress) であり、_mrf(pointerAddress + 4) で 2 番目の float を読み取ることができます。
私の質問は、あなたが C++ の専門家 (私) でない場合、クラス内のすべての変数のアドレスとそれらが何であるかなど、クラスの定義を取得する方法はありますか? したがって、b2Vec2 の場合は、float32 x 0 float34 y 4 ... のようなイメージになると思います。
私が質問している理由は、特にクラスの 1 つに多数の変数があり、AS3 コードから直接アクセスできるように、それぞれの情報を取得しようとするのは大変な作業になるためです。人的ミスをたくさん紹介します。