Flex Alchemy: Retour d'un ByteArray à partir de la fonction C
-
06-07-2019 - |
Question
J'utilise la bibliothèque Alchemy de Flex pour générer des fichiers C non SWC. J'ai un tableau d'octets ( tampon de char non signé [taille]
) dans le calque c que je voudrais renvoyer au calque ActionScript sous forme de ByteArray
. Dois-je parcourir le tableau et appeler explicitement AS3_Set
sur chaque élément ou existe-t-il un moyen de simplement renvoyer le tableau C entier en une fois?
La solution
Ceci peut être accompli en utilisant le AS3_ByteArray_writeBytes de l'API Alchemy.
Autres conseils
En C, lorsque vous revenez de la fonction appelée par Flash, renvoyez le pointeur sur le tableau C, comme suit:
int * myArray = malloc(100);
//populate array...
return AS3_Array("IntType", (int)myArray);
Ensuite, en 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
}
Ou utilisez ces fonctions pour lire les ints / floats / char du tableau c (vous ne pouvez pas utiliser simplement ByteArray.readInt (), les nombres de c sont représentés différemment)