Flex Alchemy: возвращение ByteArray из функции C - PullRequest
1 голос
/ 28 октября 2009

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

Ответы [ 2 ]

2 голосов
/ 28 октября 2009

Этого можно достичь с помощью функции AS3_ByteArray_writeBytes API-интерфейса Alchemy.

0 голосов
/ 23 декабря 2010

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

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

Затем во Flash:

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 представлены по-разному)

...