Flex Alchemy: возвращение ByteArray из функции C
-
06-07-2019 - |
Вопрос
Я использую библиотеку Flex Alchemy для создания SWC-файлов из C-файлов. У меня есть байтовый массив ( беззнаковый буфер символов [размер]
) в c-слое, который я хотел бы вернуть на слой ActionScript в виде ByteArray
. Нужно ли перебирать массив и явно вызывать AS3_Set
для каждого элемента или есть способ просто вернуть весь массив C сразу?
Решение
Это можно сделать с помощью AS3_ByteArray_writeBytes Алхимического API.
Другие советы
В 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 представлены по-разному)
Не связан с StackOverflow