SharedObject для массивов объектов.Не удается получить правильные данные при перезагрузке флэш - PullRequest
1 голос
/ 29 сентября 2011

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

Но если я перезагружаю флэш-память, данные, похоже, исчезли.

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

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")
        }
    }

1 Ответ

1 голос
/ 29 сентября 2011

Можете ли вы предоставить код для получения общего объекта? Вы используете var sharedObject:SharedObject = SharedObject.getLocal("sharedObject"); или что-то подобное?

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

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

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

...