Flex Alquimia: Voltando um ByteArray de função C
-
06-07-2019 - |
Pergunta
Eu estou usando a biblioteca Alquimia do Flex para gerar a partir de arquivos C do SWC. I têm uma matriz de bytes (unsigned char buffer[size]
) no c-camada que gostaria de retornar para a camada ActionScript como um ByteArray
. Eu tenho para percorrer a matriz e chamar explicitamente AS3_Set
em cada elemento ou há apenas uma maneira de retornar a matriz C inteiro de uma vez?
Solução
Isto pode ser feito usando o função da API Alchemy AS3_ByteArray_writeBytes .
Outras dicas
Em C, quando retornar da função chamada pelo Flash, devolver o ponteiro para o array C, como este:
int * myArray = malloc(100);
//populate array...
return AS3_Array("IntType", (int)myArray);
Então, em inflamação:
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
}
Ou use estas funções para ler o ints / carros alegóricos / char do c-array (você não pode apenas usar ByteArray.readInt (), os números em c são representados de maneira diferente)