Macromedia Flash Professional 8. Графика и анимация
Шрифт:
Формат вызова действия loadVariabies таков:
loadVariabies("Интернет-адрес серверной программы",
Путь клипа, получающего данные"[, "GET|POST"]);
С первым параметром передается интернет-адрес серверной программы, которая должна получить данные и отправить результат, или текстового файла, содержащего их. Со вторым параметром передается путь клипа, который должен принять и обработать эти данные. Третий, необязательный,
Примеры использования действия loadVariabies:
loadVariabies("http://site.ru/bin/program.pi", _root.dataHandler,"POST");
loadVariabies("data.txt", _root.dataHandler);
Оба эти выражения загружают полученные данные в клип dataHandler. Но только первое выражение получает их от серверной программы, передав ей способом POST значения переменных уровня клипа, а второе загружает их из текстового файла.
Метод loadVariabies вызывается почти так же:
<Клип, получаюпщй данные>.loadvariabies("Интернет-адрес серверной программы" [, "GET | POST"]);
Например:
_root.dataHandler.loadvariabies("http://site.ru/bin/program.pi", "POST");
Для загрузки данных в перекрывающийся фильм используется действие loadVariablesNum. Вот формат его вызова
loadvariabies("Интернет-адрес серверной программы",
"Уровень перекрытия фильма, принимающего данные"[, "GET|POST"]);
Комментарии, как говорится, излишни.
Вроде бы, все просто — выполняем действие или метод, получаем данные и обрабатываем их в своем приложении. Просто, да не совсем. Давайте рассмотрим небольшой сценарий, принимающий от серверной программы значение переменной frameNumber:
_root.loadVariables("http://site.ru/bin/program.exe");
_root.gotoAndStop(frameNumber);
Будет ли работать этот код? Может, будет, а может, и нет. И вот почему…
Когда мы даем приложению Flash команду получить данные от серверной программы или из текстового файла, мы не можем быть уверены в том, что эти данные будут получены сию же секунду. Более того, вообще нельзя быть уверенным, что Flash сможет получить их в течение какого-то строго определенного промежутка времени. Это может произойти как через долю секунды, так и через час (например, если произошел обрыв связи или если серверная программа перегружена другими запросами). И когда именно Flash получит результат, мы предугадать не можем.
Но если мы не можем предсказать время, в течение которого приложение получит внешние данные, то мы можем отследить сам момент их получения. Для этого достаточно обработать событие data
С учетом сказанного перепишем приведенный выше сценарий:
_root.onData = function {
_root.gotoAndStop(frameNumber);
}
_root.loadVariables("http://site.ru/bin/program.exe");
Вот теперь он будет работать.
Использование объекта LoadVars
Существует другой способ получения данных от серверной программы — использование экземпляров объекта LoadVars. Этот объект предоставляет по сравнению с действиями loadVariable и loadVariableNum возможность несколько более строгого контроля над процессом обмена данными, хотя выполняет те же самые функции.
Прежде всего, нам нужно создать экземпляр объекта LoadVars:
myLoadVars = new LoadVars;
Затем мы просто создаем для него новые свойства, чьи имена совпадают с именами переменных, которые нужно передать серверной программе.
И разумеется, присваиваем этим свойствам нужные значения:
myLoadVars.namel = "Ivan";
myLoadVars.name2 = "Ivanov";
myLoadVars.password = "vanyusha";
Чтобы отправить данные серверной программе, используется метод send. Формат его вызова таков:
<Экземпляр объекта LoadVars>.send("<Интернет-адрес серверной программы>"[, "<Цель>", "GET|POST"]);
С первым параметром передается интернет-адрес серверной программы, которой посылаются эти данные. Со вторым параметром может быть передана цель, указывающая, куда будет выведен результат обработки этих данных (как правило, это Web-страница, сгенерированная серверным приложением). Третий необязательный параметр определяет способ отправки данных; если он не указан, выбирается способ POST.
Вот пример выражения, реализующего отправку данных с помощью экземпляра объекта LoadVars:
myLoadVars.send("http://site.ru/bin/program.exe", "_blank", "GET");
Для приема данных от серверной программы используется метод load. С единственным параметром этого метода передается интернет-адрес этой серверной программы или же путь к текстовому файлу, содержащему нужные данные. Что касается данных, то они, опять же, должны быть представлены в виде текстовой строки, состоящей из пар "переменная" — "значение", отделенных друг от друга знаком &.