所以我有一个 C++ 类的集合,我现在可以使用 Alchemy 将其转换为 swc 文件,并且可以从我的 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 对象的第一个变量是浮点数,它将是 x 中的值,可以通过 Alchemy 的 MemUser 类 _mrf(从内存中的某个点读取 fload)和 _mrf 读取(pointerAddress),您可以使用 _mrf(pointerAddress + 4) 读取第二个浮点数。
我的问题是,如果您不是 C++ 专家(我),有没有办法获得一个类的定义,如其中所有变量的地址以及它们是什么?所以,对于 b2Vec2 来说,我想它会像 float32 x 0 float34 y 4 ...
我问的原因是因为其中一个类特别有大量变量,并且尝试获取每个人的信息,以便我可以直接从 AS3 代码访问它会做很多工作,我会假设我会介绍很多人为错误。