5
фев
  Сохранение данных при помощи Shared Object 0 баллов
 

Вопрос:


У меня есть вопрос: как сделать сохранялку для игры (жмёшь SAVE сохранилась(переменные записались в файл), LOAD и она загрузилась) или это невозможно?

Ответ:


Это можно реализовать двумя способами. Первый, сохранять всё в отдельные текстовые файлы, типа .txt и .xml, при помощи сторонних программ, которые добавляют функционала флешке, например MDM Zinc. Второй, более простой вариант, не использовать другие программы, и реализовывать всё через Shared Object, который так же иногда называют «кэшем-флешки». Сегодня мы разберём второй вариант.

Учимся работать с кэшем


Итак начнём. Сегодня мы разберём, как создавать объекты Shared Object и сохранять данные внутри них:

var my_so:SharedObject = SharedObject.getLocal(“nameSharedObject”);
my_so.data.myVar = “Напишите что-нибудь, и запустите флешку снова”;

1. var my_so:SharedObject = SharedObject.getL… — создаём сам объект Shared Object и считываем из кэша необходимые данные. my_so — новый созданный нами объект Shared Object. nameSharedObject — имя считываемого из кэша файла. Если флешка запускается впервый раз, и такой файл в кэше пока создан не был, то Flash автоматически создаст его.
2. my_so.data.myVar = “Напишите что-нибу… — в файле кэша создаём переменную myVar и присваиваем ей нужное значение. Необходимо помнить, что все данные, которые вы хотите сохранить в Shared Object объекте, должны являться свойствами его свойства data (*простите за тавтологию*).

Собственно вот мы и создали объект, в котором теперь можно сохранять данные и считывать их при последующих запусках флешки. Если не верите, то посмотрите пример к уроку, в котором введённое в поле слово или фраза будет сохраняться и отображаться при следующем запуске флешки.

Очищение кэша


Ах да, чуть не забыл, данные которые мы сохраняем при помощи Shared Object можно, по мере надобности, удалять, очищая кэш.

my_so.clear();

Как не тяжело догадаться, функция clear() — это и есть та самая функция, которая очищает кэш.

Сама флешка » | Исходник »

Комментарии (9)   Автор: admin
Комментарии
Jerry
29.03.09 | 20:10
0 баллов

Урок полезный, да вот такой вопрос: можно ли сделать несколько кэшев. Сохранил - 1 кэш занят, еще сохранил - 2-ой кэш занят и т.д., а когда дойдет до последнего, сохраняет с первого (циклично), но те записи, которые не перезаписываются, оставались. Или это невозможно?

admin
30.03.09 | 20:58
1 балл

Создайте объект SharedObject и поместите в него массив с объектами. И работайте с этими объектами. Таким образом «кеш» будет 1, а объектов будет храниться много.

Jerry
01.04.09 | 18:34
0 баллов

Спасибо, помогло. Теперь буду прогу своей мечты разрабатывать.

На этом месте был комментарий, но admin его удалил, потому что, цитирую: «Спамит в нескольких темах.».

JEX
20.05.09 | 18:32
0 баллов

Мне хотелось бы создать нечто вроде гостевой книги, то есть нужна функция которая сохраняет не в кэшэ (не для 1 пользователя), а в файле (помему во флэш это не предусмотрено) или в самой флэшке (изменение кода, тож анриал конечно))
я на сайте adobe нашёл следующий пример(у меня он не работает почему то)
вот ссылка
http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cf8.html#WSD7D78288-ADD8-422d-AF79-AE803643F71F

Jerry
03.06.09 | 23:56
0 баллов

Тут нужен АПИ (Интерфейс прикладного программирования (англ. Application Programming Interface, API [эй-пи-ай]; по-русски чаще произносят [апи́]) — набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и операционной системой). Хотя, возможен и другой способ. Но АПИ самый удобный (если вы в этом разбираетесь).

JEX
05.06.09 | 21:41
0 баллов

Просто я клоню к тому, что в flash cs4 я заметил такую команду как file.save(..)
Но разобраться с ней толком я не смог

matriks7
01.08.09 | 15:58
0 баллов

Здравствуйте, а как сделать так, чтобы функция не один текст выводила для ввода и сохранения данных, а два раза.

Т.е. если первый код:

Stage.scaleMode = "noScale";
var my_so = SharedObject.getLocal("newSharedObject1");
if (!my_so.data.myVar1)
{
    my_so.data.myVar1 = "Дата начала игры";
} // end if
var my_fmt = new TextFormat();
my_fmt.font = "Tahoma";
my_fmt.size = 14;
my_fmt.align = "left";
_root.createTextField("text_txt", 2, 100, 90, 100, 20);
text_txt.type = "input1";
text_txt.scroll = false;
text_txt.border = true;
text_txt.text = my_so.data.myVar1;
text_txt.setTextFormat(my_fmt);
text_txt.onChanged = function ()
{
    my_so.data.myVar1 = this.text;
    this.setTextFormat(_root.my_fmt);
};
clear_mc.onRelease = function ()
{
    trace ("Кэш очищен");
    my_so.clear();
};

То почему второй код с измененёнными именами не работает в том же исходнике?

Функция работает только единожды и выводит текст (для ввода и вывода) только один, а не два.

Stage.scaleMode = "noScale";
var my_so = SharedObject.getLocal("newSharedObject");
if (!my_so.data.myVar)
{
    my_so.data.myVar = "Место для ввода сохраняемого текста";
} // end if
var my_fmt = new TextFormat();
my_fmt.font = "Tahoma";
my_fmt.size = 14;
my_fmt.align = "center";
_root.createTextField("text_txt", 2, 100, 90, 500, 20);
text_txt.type = "input";
text_txt.scroll = false;
text_txt.border = true;
text_txt.text = my_so.data.myVar;
text_txt.setTextFormat(my_fmt);
text_txt.onChanged = function ()
{
    my_so.data.myVar = this.text;
    this.setTextFormat(_root.my_fmt);
};
clear_mc.onRelease = function ()
{
    trace ("Кэш очищен");
    my_so.clear();
};

И первый и второй код работают, но отдельно в разных исходниках.

Как поменять код, чтобы можно было вывести два поля для ввода и редактирования? Какой должен быть код, кто знает, чтобы работало вместе?

matriks7
01.08.09 | 16:04
0 баллов

Какой нужно сделать код, чтобы работало вместе, кто знает?

Ведь не обязательно нужно создавать объект SharedObject и в нём два объекта. Может можно проще, просто код два раза написать с разными именами переменных для ввода и вывода?

 
 
 
 

Последние комментарии

Полезные ссылки

Реклама сайтов

Купальники известный марки Amarea
В широком ассортименте мебель для ванной в Вашу квартиру
Сайт о фильмах любых жанров и направлений
проектирование пожаротушения на производстве для обеспечения пожарной безопасности