Показать сообщение отдельно
Старый 14.04.2008, 18:43
chudesno вне форума Посмотреть профиль Отправить личное сообщение для chudesno Найти все сообщения от chudesno
  № 1  
Ответить с цитированием
chudesno
 
Аватар для chudesno

Регистрация: Apr 2006
Сообщений: 85
По умолчанию Не получается корректно сериализовать объект

Доброго времени суток .
Стоит задача: сохранить объект - экземпляр класса, а потом восстановить его. Все это с помощью SharedObject.

Вот класс объекта, который пытаюсь сохранить:

Код:
package model
{
	public class Person	{
		private var _firstName : String;
		private var _age : int;
		
		public function Person (firstName : String, age : int) {
			_firstName = firstName;
			_age = age;
		}
		
		public function toString () : String {
			return _firstName + _age + " years";
		}
	}
}
А вот код, которым все это дело и должно сохраняься (но нет )

Код:
package
{
	import flash.net.registerClassAlias;
	import model.Person;
	import flash.net.SharedObject;
	
	public class Example {
		public function Example () {
			registerClassAlias("model.Person", Person);
			var example : SharedObject = SharedObject.getLocal("example");
			if (example.data.person == undefined) {
				trace ("first time");
				var person : Person = new Person ("Derron", 24);
				example.data.person = person;
				
			} else {
				trace ("it is already saved");
			}
			trace (example.data.person.toString());
		}
	}
}

Когда идет попытка восстановить объект, плеер выкидывает ошибку с тем, что ожидалось 2 параметра в конструкторе класса Person, а получено 0. Получается что при восстановлении флеш вызывает конструктор класса без параметров...
Я пробовал исключить параметры из конструктора и перенести инициализацию в отдельный метод. В результате после восстановления я получаю объект нужного класса, но с пустыми значениями полей..

Подскажите, пожалуйста, как все-таки можно восстановить объект?