(например, если произошел обрыв связи или если серверная программа перегружена другими запросами). И когда именно 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:

myLoadVars.send('http://site.ru/bin/program.exe', '_blank', 'GET');

Для приема данных от серверной программы используется метод load. С единственным параметром этого метода передается интернет-адрес этой серверной программы или же путь к текстовому файлу, содержащему нужные данные. Что касается данных, то они, опять же, должны быть представлены в виде текстовой строки, состоящей из пар 'переменная' — 'значение', отделенных друг от друга знаком &.

Вот пример использования метода load:

myLoadVars.load('http://site.ru/bin/program.exe');

Метод sendAndLoad одновременно отправляет серверной программе данные и получает от нее результат их обработки. Формат вызова этого метода:

<Экземпляр объекта LoadVars, отправляющий данные>. sendAndLoad ('<Интернет-адрес серверной прогрраммы>',

<Экземпляр объекта LoadVars, принимающий данные> [, 'GET | POST']);

Этот метод вызывается для того экземпляра объекта LoadVars, который должен отправить данные. С первым параметром передается интернет-адрес серверной программы, которая должна их получить, со вторым — ссылка на экземпляр объекта LoadVars, который получит результат. Третий параметр определяет способ отправки данных; если он не указан, выбирается способ POST.

Например:

mySendVars.sendAndLoad('http://site.ru/bin/program.exe', myLoadVars);

Для того чтобы узнать, получены ли данные, нужно обработать событие load объекта LoadVars, возникающее после получения всех данных. Функция-обработчик этого события должна принимать один логический параметр, обозначающий, успешно ли получены данные (значение true) или нет (false).

Вот пример функции-обработчика этого события:

myLoadVars.onLoad = function(isSucceed) {

if (isSucceed) {

_root.gotoAndStop(frameNumber);

}

}

Свойство loaded объекта LoadVars возвращает значение true, если данные были успешно получены, и false в противном случае. Если операция приема данных не была запущена, возвращается значение undefined.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

1

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату
×