Пример: Хранитель экрана с настройками
В этом примере мы создадим хранитель экрана, который дает пользователю
возможность менять настройки. Для того чтобы запомнить и использовать
настройки, введенные пользователем, мы воспользуемся расширенными возможностями
FSCommand.
Выполните следующие действия, чтобы создать хранитель экрана с настройками:
- Откройте SWF Maestro (SCR).
- Нажмите “Новый из..” и выберите проектный файл, который мы создали
в прошлом примере. Это позволит нам использовать существующий проект
как шаблон.
- Откройте “Файлы > Файлы для компиляции”.
- Укажите путь к файлу “Screensaver2.swf” в “Tutorials\Screensaver2”
директории. Этот файл использует ‘FSCommand(“storage.get”,””)’ –
вызов, чтобы узнать: должен ли быть шар зеленым или серым.
- Включите опцию “Меню настроек” и укажите путь к файлу “Settings.swf”,
который позволит пользователю выбрать цвет шара. Этот файл использует
‘FSCommand(“storage.set”,””)’ – вызов, чтобы запомнить выбранный
цвет.
- Нажмите “Сохранить как...”, чтобы сохранить проект.
- Скомпилируйте хранитель экрана.
- Скопируйте получившийся SCR-файл в поддиректорию System32 в директории,
где установлена Windows.
- Зайдите в “Display” – настройки и выберите Ваш хранитель экрана
из списка.
- Нажмите “Settings”, чтобы выбрать цвет, а затем “Preview”.
FLA-файлы хранителя экрана, из которых были созданы “Screensaver2.swf”
и “Settings.swf” Вы найдете в директории 'Tutorials\FLAs'.
Описание Screensaver2.swf:
Состоит из 100 кадров.
1-й кадр содержит ActionScript:
stop();
var isGreen="N";
function watchCallback (id, oldval, newval) {
if(newval!="Y") {
gotoAndPlay(10);
} else {
gotoAndPlay(60);
}
};
_root.watch("isGreen", watchCallback);
fscommand("storage.get","Green,isGreen");
Комментарии:
stop();
Останавливаем воспроизведение, чтобы инициализировать хранитель экрана
и решить: какую часть ролика воспроизводить.
var isGreen="N";
Инициализируем переменную, в которую будем читать: выбран ли зеленый
цвет.
function watchCallback (id, oldval, newval)
Эта функция будет исполнена сразу после прочтения записи из хранилища
настроек. Она анализирует значение записи и переходит к 10му кадру,
если не выбран зеленый цвет, иначе – переходит к 60му кадру.
_root.watch("isGreen",
watchCallback);
Этим вызовом watch-функции мы регистрируем прослушивание переменной isGreen.
Когда переменная получит значение, произойдет вызов нашей watchCallback-функции.
fscommand("storage.get","Green,isGreen");
Этим вызовом мы читаем значение Green из хранилища настроек и присваиваем
его переменной isGreen.
Примечание. Мы не можем просто прочитать значение с помощью FSCommand(“storage.get”,””) и перейти к нужному кадру, т.к. FSCommand-функция асинхронная и возвращает исполнение немедленно, до фактического получения значения. Поэтому требуется вводить «прослушивающую» функцию, которая исполняется после получения значения.
Кадры 10-50:
Анимация скачущего серого шара.
50 кадр также содержит ActionScript для зацикливания анимации:
gotoAndPlay(10);
Кадры 60-100:
Анимация скачущего зеленого шара.
100 кадр также содержит ActionScript для зацикливания анимации:
gotoAndPlay(60);
Описание Settings.swf:
Состоит из одного кадра.
Кадр содержит два RadioButton’а: option1 (серый шар) и option2 (зеленый шар).
Option1 содержит ActionScript:
on (release) {
fscommand("storage.set","Green,N");
}
Option2 содержит ActionScript:
on (release) {
fscommand("storage.set","Green,Y");
}
Когда пользователь выбирает первую опцию, в хранилище настроек помещается “Green” со значением “N”. Когда выбирает вторую – помещается “Green” со значением “Y”.
Также кадр содержит ActionScript для инициализации опций: stop();
var isGreen="N";
function watchCallback (id, oldval, newval)
{
if(newval!="Y") {
option1.setState(true);
} else {
option2.setState(true);
}
};
_root.watch("isGreen", watchCallback);
fscommand("maestro.storage.get","Green,isGreen"); |