SharedObject для массивов объектов. Не удается получить правильные данные при перезапуске прошивки

У меня есть массив, в котором хранится какой-то объект с его данными, и я пытаюсь сохранить его на своем компьютере. Если я попытаюсь загрузить данные после сохранения данных, я могу получить правильные данные. Пояснение: [Игрок-объект]

Но если я перезапущу флешку, данные, похоже, пропадут.

В чем проблема?

private var sharedObject:SharedObject = SharedObject.getLocal("aquarium", "/");

public function save(n:String):void
    {
        /* player list will only handle the list of all the Players
         * each player data will handle by Player class itself.
         */

        registerClassAlias("Player", Player)
        player = new Player()
        player.newPlayer(n, LATEST_VERSION)
        playerArray.push(player)


        //saving as shared object
        sharedObject.data.aquariumData = playerArray
        sharedObject.flush()

        load()
    }

public function load():void
    {           
        if (sharedObject.size > 0)
        {
            trace("loading player info")
            playerArray = sharedObject.data.aquariumData
            trace(playerArray)
        }
        else
        {
            trace("there's no record")
        }
    }

person Hwang    schedule 29.09.2011    source источник


Ответы (1)


Не могли бы вы предоставить код, как вы получаете общий объект? Вы используете var sharedObject:SharedObject = SharedObject.getLocal("sharedObject"); или что-то вроде этого?

Кроме того, при вызове registerClassAlias("Player", Player) перед сериализацией имейте в виду, что он должен вызываться и перед извлечением данных, поэтому десериализация будет работать правильно и вернет массив объектов Player, а не массив объектов Object.

И закрытие sharedObject - очень хорошая практика после сброса :)

P.S. Ваш код работает, насколько я проверял, заменяя ваш класс Player другим пользовательским классом.

person Ivan Raykov    schedule 29.09.2011