Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.04.2011, 19:53
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 1  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
По умолчанию Отсутствие типа данных, при обращении к данным в SharedObject

Есть экземпляр gameData класса GameData, который содержит члены-переменные: level, score и пр.

Код AS3:
//Записываю gameData в SharedObject экземпляр:
 
var sharedObject:SharedObject = SharedObject.getLocal("profile");
sharedObject.data[“gameData”] = gameData;
 
//Далее перезапускаю игру и обращаюсь:
var sharedObject:SharedObject = SharedObject.getLocal("profile");
var gd: GameData = GameData (sharedObject.data.gameData);
//компилятор выдает ошибку, что не может привести тип к GameData, т.к. возвращаемый объект типа данных Object.
Фактически sharedObject.data.gameData – содержится объект типа Object, а не типа GameData, хотя и имеет все динамические члены-переменные (level, score) и пр.

Если сделать так, то все ок:
Код AS3:
var gd:*= sharedObject.data.gameData;
Почему, когда мы записывает экзепляр класса в SharedObject, то получаем на выходе тип Object, а не GameData ?


Последний раз редактировалось udaaff; 17.04.2011 в 20:06.
Старый 17.04.2011, 20:15
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Все объекты записываемые в SharedObject сериализуются с помощью AMF. Со всеми вытекающими. Для корректной десериализации ваш класс должен реализовывать IExternalizable.

Старый 17.04.2011, 20:33
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
registerClassAlias() в помощь.

Старый 18.04.2011, 16:55
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 4  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
Делаю:
//Записываю gameData в SharedObject экземпляр:

Код:
registerClassAlias(getQualifiedClassName(gameData), getDefinitionByName(gameData) as Class);
var sharedObject:SharedObject = SharedObject.getLocal("profile");

sharedObject.data[“gameData”] = gameData;
 
//Далее обращаюсь:
var sharedObject:SharedObject = SharedObject.getLocal("profile");
var gd: GameData = GameData (sharedObject.data.gameData);

//компилятор выдает ошибку, что не может привести тип к GameData, т.к. возвращаемый объект типа данных Object.
Но все-равно возвращается тип Object, подскажите может, что еще надо сделать + не совсем пойму, что за псевдоним отправляется в первый параметр (т.е. зачем он нужен в данном случае)...


Последний раз редактировалось Denis_ex; 18.04.2011 в 20:10.
Старый 18.04.2011, 17:04
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 5  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
зарегистрируйте как сказал udaaff
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 18.04.2011, 17:10
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Сначала, регистрируется класс. Потом кодируется/декодируется.

Старый 18.04.2011, 17:13
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Алатар, всё проще в этом случае.

Старый 18.04.2011, 17:44
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 8  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
Цитата:
Сообщение от alatar Посмотреть сообщение
Сначала, регистрируется класс. Потом кодируется/декодируется.
В последнем моем посте, я так и делаю, регистрируюсь, потом кодирование, декодирование, но компилятор выдает ту же ошибку, т.е. на выходе получается тип Object.
Т.е. по вышеприведенному коду, что там не так?

Старый 18.04.2011, 17:50
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Денис, погуглите по той информации, которую я вам дал.

Старый 18.04.2011, 20:08
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 10  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
Спасибо, помогло
Если кому надо: http://riapriority.com/blogs/graann....sterclassalias

Добавлено через 31 минуту
Возник вопрос: если вызывать несколько раз registerClassAlias к одному и тому же классу, то ничего не будет дублироваться, вторичная регистрация отсеется на стадии инкапсуляции?

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.