Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сохранение игры: Варианты (http://www.flasher.ru/forum/showthread.php?t=181983)

Tetraeon 08.07.2012 13:03

Сохранение игры: Варианты
 
Приветствую, занялся элементом сохранения игры... насторожило что при сохранении приходится указывать все переменные по отдельности(переменных уже больше 100, а будит еще больше). Есть ли варианты сохранения игры по проще чем:
Код AS3:

var saveGame:SharedObject = SharedObject.getLocal("FlashSave");
 
saveGame.data.heroX = Hero.hero.x;
saveGame.data.heroY = Hero.hero.y;

И соответственно загрузка:
Код AS3:

Hero.hero.x = saveGame.data.heroX;
Hero.hero.y = saveGame.data.heroY;

Если нет.. подскажите как сохранять запущенный таймер что бы потом вернутся на то же место?

Добавлено через 21 минуту
сохранить наверно можно так:
Код AS3:

saveGame.data.sk7ColDown = Hero.hero.sk7ColDown.currentCount;

с загрузкой не разобрался..

fish_r 08.07.2012 13:41

В SharedObect можно сохранять прямо весь объект Hero со всеми значениями полей, если Hero является дата-объектом а не отображаемым. Важно, что сохраняются лишь значения паблик полей и те значения приватных полей у которых есть паблик акцессоры.

Tetraeon 08.07.2012 14:44

Судя по всему у меня Hero является отображением (MovieClip) класса Hero подкласса Warrior. А можно ли его передать в data объект перед сохранением и как?
По поводу таймера кто нибудь знает ?(выше вопрос)

HardCoder 08.07.2012 14:53

Создать в Hero метод:
Код AS3:

public function toJSON():String {
  //здесь проходим по НУЖНЫМ нам свойствам и создаем
  //строку в формате JSON и возвращаем ее
}

Потом просто пихаем в объект нашу строку (или несколько строк):
Код AS3:

var saveGame:SharedObject = SharedObject.getLocal("FlashSave");
 
saveGame.data.heroSettings = hero.toJSON();
saveGame.data.enemySettings = enemy.toJSON();
saveGame.data.worldSettings = gameWorld.toJSON();

При загрузке просто распарсить строчку и присвоить свойствам героя/врага/мира соответствующие значения.

fish_r 08.07.2012 15:01

Цитата:

Сообщение от HardCoder (Сообщение 1087782)
Создать в Hero метод:
Код AS3:

public function toJSON():String {
  //здесь проходим по НУЖНЫМ нам свойствам и создаем
  //строку в формате JSON и возвращаем ее
}

Потом просто пихаем в объект нашу строку (или несколько строк):
Код AS3:

var saveGame:SharedObject = SharedObject.getLocal("FlashSave");
 
saveGame.data.heroSettings = hero.toJSON();
saveGame.data.enemySettings = enemy.toJSON();
saveGame.data.worldSettings = gameWorld.toJSON();

При загрузке просто распарсить строчку и присвоить свойствам героя/врага/мира соответствующие значения.

тот же шарик - вид сбоку

Добавлено через 2 минуты
Цитата:

Сообщение от Tetraeon (Сообщение 1087781)
Судя по всему у меня Hero является отображением (MovieClip) класса Hero подкласса Warrior. А можно ли его передать в data объект перед сохранением и как?

Вопрос архитектуры. Ваш Hero будучи отображаемым объектом должен бы иметь ссылку на дата объект ( напр. HeroData) где и брать нужные параметры, а уже дата объект можно сохранять в SharedObject...

Tetraeon 08.07.2012 15:13

Цитата:

Сообщение от HardCoder (Сообщение 1087782)
Создать в Hero метод:
Код AS3:

public function toJSON():String {
  //здесь проходим по НУЖНЫМ нам свойствам и создаем
  //строку в формате JSON и возвращаем ее
}

Потом просто пихаем в объект нашу строку (или несколько строк):
Код AS3:

var saveGame:SharedObject = SharedObject.getLocal("FlashSave");
 
saveGame.data.heroSettings = hero.toJSON();
saveGame.data.enemySettings = enemy.toJSON();
saveGame.data.worldSettings = gameWorld.toJSON();

При загрузке просто распарсить строчку и присвоить свойствам героя/врага/мира соответствующие значения.


По сути все равно придется каждое св-во вбивать насколько я понял (хотя этот вариант получше, спасибо).
Я надеялся на вариант:
Код AS3:

saveGame.data.Hero= Hero.hero.*;

Или какой нибудь аналог сохранения самого класса, по сути что такое сохранение - это перенос всех текущих параметров переменных в отдельное место, что бы потом можно было их оттуда достать.
Неужели не придумали как сохранить все что есть везде в файл?

Как вы таймеры перематываете на нужное место?

Добавлено через 5 минут
Цитата:

Сообщение от fish_r (Сообщение 1087783)
Вопрос архитектуры. Ваш Hero будучи отображаемым объектом должен бы иметь ссылку на дата объект ( напр. HeroData) где и брать нужные параметры, а уже дата объект можно сохранять в SharedObject...

Не совсем понятно как все то добро что у меня есть переделать в data объект.. попробую в нете покопаться на эту тему, спасибо за подсказку.

zuxul 09.07.2012 18:20

Не понимаю, зачем здесь JSON.
Назовите лучше метод toObject(), и не надо будет перегонять JSON -> object, object -> JSON.

PlutDem 04.08.2012 21:11

А можно ли как то сохранить ссылку на объект? Скажем, свойстве героя target находится ссылка на объект монстра.
Код AS1/AS2:

Hero.target = monsterObject;



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

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