SWF Maestro: универсальный компилятор для создания приложений, игр, хранителей экрана из SWF файлов

Пример: Диалог с пользователем

В этом примере мы создадим приложение, которое спрашивает у пользователя его имя, запоминает и использует его при последующих запусках приложения. Для того чтобы запомнить данные, введенные пользователем, мы воспользуемся расширенными возможностями FSCommand.

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

  1. Откройте SWF Maestro (EXE).
  2. Нажмите “Новый из...” и выберите один из проектных файлов, созданных в предыдущих примерах.
  3. Откройте “Файлы > Файлы для компиляции”.
  4. Выберите “Компилировать один SWF файл” и укажите путь к файлу “dialog.swf” в “Tutorials\Interaction” директории. Он использует ‘FSCommand’ – вызовы для работы с хранилищем данных, чтобы запомнить/восстановить имя, введенное пользователем.
  5. Нажмите “Сохранить как...”, чтобы сохранить проект.
  6. Нажмите "Предпросмотр", чтобы протестировать приложение.

FLA-файл приложения, из которого был создан “interaction.swf” Вы найдете в директории 'Tutorials\FLAs'.

Описание interaction.swf:

Состоит из 3х кадров.
1й кадр содержит ActionScript:

stop();
var UserName="";
function watchCallback (id, oldval, newval) {
  if(newval=="") {
            gotoAndStop(2);
  } else {
            gotoAndStop(3);
  }
};

_root.watch("UserName", watchCallback);
fscommand("storage.get","UName,UserName");

Комментарии:
stop();
Останавливаем воспроизведение, чтобы инициализировать приложение и проверить: известно ли нам имя пользователя.

var UserName="";
Инициализируем переменную, в которую будем читать имя пользователя.

function watchCallback (id, oldval, newval)
Эта функция будет исполнена сразу после прочтения записи из хранилища данных. Она анализирует полученное значение записи и переходит к 2му кадру, если имя не известно, иначе – переходит к 3му кадру.

_root.watch("UserName", watchCallback);
Этим вызовом watch-функции мы регистрируем прослушивание переменной UserName. Когда переменная получит значение, произойдет вызов нашей watchCallback-функции.

fscommand("storage.get","UName,UserName");
Этим вызовом мы читаем значение UName из хранилища настроек и присваиваем его переменной UserName.

Примечание. Мы не можем просто прочитать значение с помощью FSCommand(“storage.get”,””) и перейти к нужному кадру, т.к. FSCommand - функция асинхронная и возвращает исполнение немедленно, до фактического получения значения. Поэтому требуется вводить «прослушивающую» функцию, которая исполняется после получения значения.

2й кадр содержит: “Input Text”-поле под названием “InputName” и “PushButton”, у которого “Click Handler = onConfirm”.
2й кадр также содержит ActionScript:

function onConfirm(component){
            FSCommand("storage.set","UName,"+InputName.text);
            gotoAndStop(1);
}

Комментарии:
Эта функция исполняется при нажатии кнопки и помещает введенный пользователем текст (имя) в хранилище данных как значение с названием “UName”.

3й кадр содержит: “Dynamic Text”-поле под названием “DynaText” и “PushButton”, у которого “Click Handler = onReset”.
3й кадр также содержит ActionScript:

function onReset(component){
            FSCommand("storage.clear");
            gotoAndStop(1);
}

function watchCallback (id, oldval, newval) {
  if(newval=="") {
            gotoAndStop(2);
  } else {
            DynaText.text="Привет, "+newval;
  }
};

_root.watch("UserName", watchCallback);
fscommand("storage.get","UName,UserName");

Комментарии:
function onReset(component) { }
Эта функция исполняется при нажатии кнопки и очищает хранилище данных.

Остальной код читает UName-значение из хранилища данных и, если значение пустое, то переводит исполнение 2му кадру, иначе помещает в текстовое поле строку приветствия.