2010-01-13 8 views
2

J'ai besoin de sérialiser et de désérialiser (est-ce même un mot?) Un tableau dans AS3, donc il peut être envoyé comme une chaîne.Sérialisation d'un tableau dans Flash AS3

Le seul problème est qu'il ne contient pas seulement du texte, il contient des objets.

Est-il possible de sérialiser et de désérialiser des tableaux dans AS3 comme vous le pouvez en PHP? Comment puis-je le faire?

Une fois ce bug corrigé, tout ira bien avec mon programme. EDIT: Je dois pouvoir synchroniser un tableau sur plusieurs fichiers flash, qui se connectent via TCP et peuvent envoyer des choses simples comme des chaînes et des entiers, je dois donc pouvoir transmettre des données à ce sujet en une seule fois, sous forme de chaîne.

Répondre

0

Si votre objectif est de communiquer entre les clients via TCP, il vous suffit de sérialiser les objets avec AMF en utilisant la méthode writeObject sur votre socket. Je ne suis pas sûr que cela soit en contradiction avec votre exigence "en forme de chaîne", car il s'agit plus d'un format binaire pour l'efficacité. Editer: Ecrit l'objet dans un ByteArray, puis Base64 le code pour produire une chaîne. Cela serait similaire à la façon dont certains services Web traitent les données binaires, car il doit s'agir de lieux dans un format de chaîne qui se positionne bien avec xml, et base64 contient tous les caractères imprimables.

Vous pouvez même compresser le bytearray avant de l'encoder, pour le rendre plus petit pour l'envoi à travers le fil.

ByteArray: http://livedocs.adobe.com/flex/3/html/help.html?content=ByteArrays_2.html

Il y a une bibliothèque base64 attachée dans ce fil de discussion, vous pouvez trouver d'autres bibliothèques sur Internet: http://www.flexdeveloper.eu/forums/actionscript-3-0/compress-and-uncompress-strings-using-bytearray

+0

peut-être que je dois préciser ... J'utilise un wh API multi-joueurs Je utilise TCP. Je peux seulement envoyer des chaînes et des entiers ... – Cyclone

+0

Voir edit, writeobject à bytearray, éventuellement compresser si vous voulez, puis encoder en base64 et vous pouvez travailler avec lui comme une chaîne. – AaronLS