Формат вызова действия 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");
Для загрузки данных в перекрывающийся фильм используется действие l oadVariablesNum . Вот формат его вызова
loadvariabies ("Интернет-адрес серверной программы",
"Уровень перекрытия фильма, принимающего данные" [, "GET|POST"]);
Комментарии, как говорится, излишни.
Вроде бы, все просто — выполняем действие или метод, получаем данные и обрабатываем их в своем приложении. Просто, да не совсем. Давайте рассмотрим небольшой сценарий, принимающий от серверной программы значение переменной frameNumber :
_root.loadVariables(" http://site.ru/bin/program.exe");
_root.gotoAndStop(frameNumber);
Будет ли работать этот код? Может, будет, а может, и нет. И вот почему…
Когда мы даем приложению Flash команду получить данные от серверной программы или из текстового файла, мы не можем быть уверены в том, что эти данные будут получены сию же секунду. Более того, вообще нельзя быть уверенным, что Flash сможет получить их в течение какого-то строго определенного промежутка времени. Это может произойти как через долю секунды, так и через час (например, если произошел обрыв связи или если серверная программа перегружена другими запросами). И когда именно Flash получит результат, мы предугадать не можем.
Но если мы не можем предсказать время, в течение которого приложение получит внешние данные, то мы можем отследить сам момент их получения. Для этого достаточно обработать событие data объекта movieClip , возникающее после получения клипом всех (до самой последней переменной) данных.
С учетом сказанного перепишем приведенный выше сценарий:
_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 :
Читать дальше
Конец ознакомительного отрывка
Купить книгу