Пример: Диалог с пользователем
В этом примере мы создадим приложение, которое спрашивает у пользователя
его имя, запоминает и использует его при последующих запусках приложения.
Для того чтобы запомнить данные, введенные пользователем, мы воспользуемся
расширенными возможностями FSCommand.
Выполните следующие действия, чтобы создать приложение, которое спрашивает
и запоминает имя пользователя:
- Откройте SWF Maestro (EXE).
- Нажмите “Новый из...” и выберите один из проектных файлов,
созданных в предыдущих примерах.
- Откройте “Файлы > Файлы для компиляции”.
- Выберите “Компилировать один SWF файл” и укажите путь к файлу “dialog.swf”
в “Tutorials\Interaction” директории. Он использует ‘FSCommand’ – вызовы
для работы с хранилищем данных, чтобы запомнить/восстановить имя, введенное
пользователем.
- Нажмите “Сохранить как...”, чтобы сохранить проект.
- Нажмите "Предпросмотр", чтобы протестировать приложение.
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му кадру,
иначе помещает в текстовое поле строку приветствия. |