2015-09-22 3 views
-1

Я не могу это выяснить, так что вы, ребята, можете мне помочь.сохранить ошибку загрузки 1010 объектов массива с sharedObjects as3

Я храню некоторые данные в виде массива, заполненного объектами в этих примерах.

в моем главном классе у меня есть следующий код:

deckSprite.savedData = SharedObject.getLocal("cardsdata"); 
deckSprite.savedData.data.savedArray = deckSprite.deckArr; 
deckSprite.savedData.flush(); 
trace(deckSprite.savedData.data.savedArray); 

след будет выводить что-то вроде [объект CARD1, объект Card2, объект card3]

теперь в статическом классе под названием «deckSprite» У меня есть это:

savedData = sharedObject.getLocal("cardsdata"); 
if (savedData.data.savedArray == undefined) 
{ 
trace("no save yet"); 
} 
{ 
else 
{ 
trace("save loaded"); 
deckArr = savedData.data.savedArray; 
trace(savedData.data.savedArray); 

теперь мои данные трассировки оказываются только «,» (как-то карты исчезли).

теперь после того, как я получил сохраненные данные, я перезапускаю приложение и всякий раз, когда он пытается получить доступ к файлу deckArr, он выдает сообщение об ошибке «Термин не определен и не имеет свойств».

Как это возможно, что, когда я сохраняю массив, он сохраняет все карты внутри массива и когда я перезапускаю приложение, его вдруг только «,,», но карты исчезли?

+0

Вы можете найти этот вопрос полезным: http://stackoverflow.com/questions/30125221/using-file-to-save-scene-object-locations-to-rebuild-later-in-as3/30131304#30131304 – BadFeelingAboutThis

ответ

0

При сериализации объектов в AS3 вам необходимо зарегистрировать свой класс, используя registerClassAlias() из пакета flash.net. Таким образом, вы должны называть что-то вроде

registerClassAlias('com.example.deck', Deck) 

в программе перед любой сохранением или загрузкой.

Посмотреть полную ссылку на AS3 API Reference


ПРИМЕЧАНИЕ: Как было отмечено @BadFeelingAboutThis в комментариях, вы должны зарегистрировать все ссылается класс в вашем Deck, то есть, если ваша колода выглядит следующим образом:

class Deck { 
    var firstCard:Card; 
    var type:DeckType; 
} 

, чтобы иметь возможность сохранить Deck к SharedObject вы должны вызвать

registerClassAlias('com.example.deck', Deck); 
registerClassAlias('com.example.card', Card); 
registerClassAlias('com.example.decktype', DeckType); 

перед любой экономией/загрузкой делается.


EDIT

Все зависит от содержания вашего массива Если я полагаю, ваш deckSprite объявлен как это:

var deck1:Deck = new Deck(); 
var deck2:Deck = new Deck(); 
var deckArr:Array = new Array(deck1, deck2); 
var deckSprite:DeckSprite = new DeckSprite() 

deckSprite.setDeckArr(deckArr); 

затем перед добавлением deckArray к SharedObject, вы должны позвоните по телефону registerClassAlias().СОУ ваш сохранить код будет выглядеть следующим образом:

registerClassAlias('com.example.deck', Deck); 
deckSprite.savedData = SharedObject.getLocal("cardsdata"); 
deckSprite.savedData.data.savedArray = deckSprite.deckArr; 
deckSprite.savedData.flush(); 
trace(deckSprite.savedData.data.savedArray); 

(заменить Deck с фактическим классом вы используете для представления ваших колод)

Аналогичным образом, первая линия должна быть вызвана, прежде чем делать какие-либо нагрузки.

Конечно, лучше не повторять себя, поэтому вам нужно позвонить registerClassAlias('com.example.deck', Deck); только один раз в вашу программу, например, в каком-то методе init() в вашем основном классе, если у вас есть что-то в этом роде.

+0

tnx собирается попробовать это прямо сейчас –

+0

Можете ли вы привести мне пример, возможно, не получится правильно –

+1

Также стоит отметить, что вам нужно зарегистрировать каждый не примитивный класс, который вложен в ваш массив, поэтому ваш ' card1' 'card2'' card3' и т. д., а также любые непримитивы, которые могут быть внутри этих классов карт (если есть). Все сказанное: хранение объектов отображения в общих объектах обычно не работает таким образом. Я бы рассмотрел этот вопрос: http://stackoverflow.com/questions/30125221/using-file-to-save-scene-object-locations-to-rebuild-later-in-as3/30131304#30131304 – BadFeelingAboutThis

 Смежные вопросы

  • Нет связанных вопросов^_^