Вот пример кода
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.display.Graphics;
var savedData:SharedObject = SharedObject.getLocal("savedData");
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000, 0.5);
sprite.graphics.drawRect(0, 0, 40, 40);
this.addChild(sprite);
// first run
if (!savedData.data.spriteData) {
sprite.x = 100 + Math.random()*300
sprite.y = Math.random()*300
sprite.rotation = Math.random()*90;
sprite.scaleX = sprite.scaleY = 0.5 + Math.random();
savedData.data.spriteData = new ByteArray();
savedData.data.spriteData.writeObject(sprite);
}else {
var sd:Object = savedData.data.spriteData.readObject();
for (var s in sd) {
try {
sprite[s] = sd[s];
} catch (e:Error) {
trace("ERROR "+e);
}
}
}
При первом запуске он случайно помещает спрайта на сцену. Затем он сохраняет экранный объект в формате AMF как ByteArray в SharedObject.
При втором запуске он пытается присвоить каждое значение из сохраненного объекта ByteArray объекту Sprite на сцене. Это, однако, является ошибочным, и это работает только для свойств, которые не были ссылками. Для других сложных типов выдает ошибку приведения типа.
Итак. Вы можете хранить данные как ByteArray, но вам нужно будет правильно создать экземпляр объекта после.
Я хотел бы создать свой собственный DataStoringObject для сохранения только необходимых свойств для создания экземпляра, а затем метод создания экземпляров, который будет считывать объект байта Array и заботиться о размещении объекта на сцене.