Avoir un problème de lecture par des objets personnalisés. Toute aide est appréciée
4 Réponses :
Regardez l'objet que byteArray.readObject () code> retourne. Vous verrez probablement que toutes les propriétés sont là, mais les informations de type sont perdues. Donc, vous pouvez résoudre ceci en créant des
Le problème est un objet personnalisé avoir un autre objet personnalisé ... Par exemple, COBJ._MYHOME = MyHome, où MyHome: MyHome étend un objet
Votre classe CustomObject est fausse, il devrait lancer une erreur en réalité, il devrait s'agir de ce que édition: p> sonne comme MACKE a un point, parce que cela Fonctionne ... p>
//read
try { bytes.uncompress() } catch (e:Error) { }
var obj:Object = bytes.readObject();
trace(obj) // [object Object]
trace(obj._z) // 60
Je ne pense pas que cela importerait dans ce cas?
Je ne suis pas sûr que cela aurait besoin de le tester ... La classe CustomObject est un problème plus important!
Awesome var obj: objet = octets.readObject (); et registreClassalias ("com.example.eg", exampleclass); fait le tour
et sur l'erreur CustomObject Theres Syntaxe dans la question, mais dans la classe actuelle, elle est correctement codée.
Ce que vous voulez faire est d'utiliser la méthode RegiscLassalias pour enregistrer des informations de type avec les données. De cette façon, Flash saura comment sérialiser / désérialiser votre objet. Voici quelques échantillons de code d'Adobe's Documentation :
registerClassAlias("com.example.eg", ExampleClass); var eg1:ExampleClass = new ExampleClass(); var ba:ByteArray = new ByteArray(); ba.writeObject(eg1); ba.position = 0; var eg2:* = ba.readObject(); trace(eg2 is ExampleClass); // true
Woah Register classe, sonne cher..does qui causent des problèmes de performance ou quoi, ah je vais google it
Pas vraiment. Il stocke des informations sur le type dans les données, mais ce n'est pas trop inefficace. Cela n'affecte pas vraiment le traitement non plus. Il est utilisé pour stocker des objets dans le protocole AMF qui est largement utilisé pour le transfert de données dans la plate-forme Flash. Autre que le stockage manuelle des informations de type et la conversion manuelle des données d'objet brutes à des types spécifiques, c'est votre seule option vraiment et ce n'est pas mauvais.
Oui, j'utilise des objets "personnalisés" afin que c'est plus rapide que le nouvel objet (); si demandé si cela pourrait causer des problèmes de performance dans Weird AS3
À moins que vous n'ayez d'énormes graphiques d'objet ou sérialisez / désériorialisez d'énormes quantités d'objet de manière cohérente, je ne m'inquiéterais pas. Dans les deux cas, l'ajout d'informations de dactylographie serait probablement le moindre de vos problèmes.
Pour sérialiser les classes personnalisées au Si vous ne le faites pas, votre classe personnalisée sera sérialisée en tant que type d'objet. J'appelle byteArray code>, vous devez mettre
regisclassalias code> dans le constructeur de la classe appelant la fonction
byteArray.writeObject () code> fonction .
registreClassalias code> dans la fonction Serialize ci-dessous et ma classe personnalisée continue à être sérialisée en tant qu'objecteur code> jusqu'à ce que je déplace le
regisclassalias code> sur le constructeur. p>
L'appel à enregistrerClassalias doit venir avant l'appel à ByTeArray: WriteObject, mais il n'est pas b> ne doit pas être dans le constructeur de la classe à sérialiser.