AS3 Personnalisé Objet ByteArray alors pour Objet Personnalisé
Avoir un problème de lecture bytearray d'objets personnalisés. Toute aide est appréciée
public class CustomObject extends Object {
public function CustomObject() {
public var _x:Number = 100
public var _y:Number = 10
public var _z:Number = 60
}
}
var cObj:CustomObject = new CustomObject()
var bytes:ByteArray = new ByteArray()
bytes.writeObject(cObj)
bytes.compress()
//read
try { bytes.uncompress() } catch (e:Error) { }
var obj:CustomObject = bytes.readObject() as CustomObject
trace(obj) //null why?!
trace(obj._z) //Obviously - TypeError: Error #1009: Cannot access a property or method of a null object reference.
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez faire est d'utiliser la registerClassAlias méthode pour enregistrer les informations de type long avec les données. De cette façon, le Flash ne sais comment sérialiser/désérialiser votre objet. Voici un exemple de code à partir d'Adobe la documentation:
Il convient de noter que tous types qui devrait être sérialisé doit être inscrit pour les informations de type pour être sauvé. Donc, si vous avez un autre type qui est référencée par votre type, il doit être enregistré.
Votre CustomObject classe est faux , il faut jeter une erreur en fait , il doit être présent au lieu
Edit:
Sonne comme macke a un point, parce que cela fonctionne...
Regardez objet
ByteArray.readObject()
retourne. Vous verrez probablement que toutes les propriétés sont là, mais le type de l'information est perdue. Donc, vous pouvez résoudre ce problème en créant desPour sérialiser les classes personnalisées pour les
ByteArray
, vous devez mettreregisterClassAlias
dans le constructeur de la classe de l'appel de labyteArray.writeObject()
fonction.Si vous ne le faites pas, votre classe personnalisée sera sérialisé le type d'Objet. J'ai été appeler
registerClassAlias
dans la fonction serialize ci-dessous et ma classe personnalisée cesse de s'sérialisé commeObject
jusqu'à ce que j'ai déplacé laregisterClassAlias
du constructeur.