0

不起作用:

             var b:ByteArray = new ByteArray();
             b.writeFloat(-50.000000);
             b.position = 0;


             cpp.processFloat(b,b.bytesAvailable);

共产党:

static AS3_Val processFloat(void* self, AS3_Val args){
unsigned iTestSize;
AS3_Val sOrigFile = AS3_Undefined();

AS3_ArrayValue( args, "AS3ValType, IntType", &sOrigFile, &iTestSize );

float * sFile = (float *)malloc(sizeof(float) * (iTestSize + 1));

int res = AS3_ByteArray_readBytes(sFile, sOrigFile, iTestSize);

fprintf( stderr, "** processFloat() size: %i sFile: %.03f, res:%i\n", iTestSize, sFile, res );

fprintf 输出:** processFloat 大小:4 sFile:0.000,res:4

怎么了?如何将浮点数组从闪存传递给 swc?

4

1 回答 1

0

你的问题是字节排序(更多细节在这里)。您需要将 ByteArray 设置为 Little Endian:

var b:ByteArray = new ByteArray();
b.endian= Endian.LITTLE_ENDIAN;
b.writeFloat(-50.000000);
b.position = 0;

cpp.processFloat(b,b.bytesAvailable);

另外,你iTestSize很困惑。您传入bytesAvailable但随后将其乘以sizeof(float)(并加 1??)。

于 2012-08-21T15:56:31.367 回答