Flex Alchemy: возврат ByteArray из функции C

Я использую библиотеку Flex Alchemy для создания SWC из файлов C. У меня есть массив байтов (unsigned char buffer[size]) на c-уровне, который я хотел бы вернуть на уровень ActionScript как ByteArray. Должен ли я перебирать массив и явно вызывать AS3_Set для каждого элемента, или есть способ просто вернуть весь массив C сразу?


person Raul Agrait    schedule 28.10.2009    source источник


Ответы (2)


Это можно сделать с помощью AS3_ByteArray_writeBytes API Alchemy.

person Raul Agrait    schedule 28.10.2009

В C при возврате из функции, вызванной Flash, возвращайте указатель на C-массив, например:

int * myArray = malloc(100);
//populate array...
return AS3_Array("IntType", (int)myArray);

Затем во флеше:

import cmodule.<c module name>.MemUser;
...
memory = new MemUser();
for (var i:int = 0; i<4;i++) { //getting a 4 uints array
    trace(memory._mru16(data[0] + i*4)); //data is the return value from C
}

Или используйте эти функции для чтения ints/floats/char из c-массива (вы не можете просто использовать ByteArray.readInt(), числа в c представлены по-разному)

person dutzi    schedule 23.12.2010
comment
Почему бы просто не вернуть AS3_Int( (int)myArray ) в коде C? - person aaaidan; 11.03.2011