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