Справочник по Flash : ActionScript : Action : loadVariables - Загружает в клип или фильм внешние переменные

смотрим также

Материал из Справочник Web-языков

Версия от 14:17, 26 апреля 2011; Evgen (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск



loadVariables

(Глобальная функция)

Загружает в клип или фильм внешние переменные

Синтаксис:

loadVariables (url, target); 
loadVariables (url, target, method);

Аргументы:

url
Абсолютный или относительный адрес источника переменных - сценария на стороне сервера, который возвращает переменные, или текстового файла, содержащего переменные. При подгрузке в сети, файл должен находиться в том же поддомене, что и исходный клип.
target
Строка, указывающая уровень, или имя муви-клипа, куда необходимо заслать полученные переменные. Первый (базовый) клип находится на нулевом уровне (level 0), подгруженные клипы могут находится на уровнях с другими номерами.
method
Необязательный аргумент, указывающий метод передачи переменных внешнему сценарию. Если он задан, то переменные текущей временной диаграммы передаются сценарию, а target получает загруженные переменные. Если этот аргумент опущен, то переменные загружаются, но не отправляются. Допустимыми значениями для method являются "GET" и "POST". Этот параметр должен быть литералом, а не переменным или другим выражением.

Обычно переменные внутри фильмов определяются при помощи ActionScript. Однако посредством loadVariables() можно также импортировать в клип переменные из текстового файла или выполняемого на сервере приложения - например, сценария PHP. Областью видимости для переменных, загружаемых через loadVariables(), является клип или уровень, указанные в target, а типом данных всегда является string. Для прикрепления загруженных переменных к текущей временной диаграмме нужно использовать в качестве значения аргумента target пустую строку.

Примеры:

Пример: Прикрепление переменных к текущей временной диаграмме.

loadVariables("myVars.txt", "");
// Загружаем переменные из myVars.txt
// в текущую временную диаграмму

Вне зависимости от того, будут ли загружаемые переменные находиться в текстовом файле, или из создает сценарий, они должны иметь формат, соответствующий кодировке URL:

  • Имя каждой переменной должно отделяться от ее значения знаком равенства, без пробелов: firstName=Jon.
  • Пары имен/значений должны разделяться амперсандами (&): firstName=Jon&lastName=Smit.
  • Пробелы должны быть заменены знаками плюс (+).
  • Любой символ, не являющийся пробелом, цифрой (1-9) или латинской буквой (a-z, A-Z), должен быть заменен шестнадцатеричной escape-последовательностью вида %xx, где xx является кодовой позицией символа в Latin 1 в шестнадцатеричном виде.

Следующий пример покажет содержимое текстового файла, импортируемого во Flash посредством loadVariables().

Пример: Импортирование из файла переменных name и address.

name=Jon&address=65+malkom+st%21
// name присваивается значение "Jon"
// address присваивается значение "65 malkom st!"

Текстовой файл, который используется в loadVariables(), является обычным текстовым файлом, содержащим переменные в кодировке URL, как показано выше. Для загрузки переменных из внешнего текстового файла путь к файлу указывается как аргумент URL в вызове функции loadVariables().

Пример: Загрузка переменных в главную временную диаграмму.

// Загрузить переменные из myVar.txt
// в главную временную диаграмму фильма
loadVariables("myVar.txt", "_root");

loadVariables() также можно использовать со сценарием или приложением сервера, выводящим переменные в кодировке URL. Когда сценарий посылает переменные в фильм Flash в ответ на вызов функции loadVariables(), он должен задать MIME-тип данных как "application/x-www-urlform-encoded".

На равне с приемом переменных, функция loadVariables() также может передавать переменные в сценарий на стороне сервера. Чтобы отправить в сценарий все переменные, определенные в текущей временной диаграмме, аргумент method при вызове функции loadVariables() задается равным "GET" или "POST". Переменные пересылаются в формате кодировки URL.

Если method задан как "GET", переменные передаются как строка запроса в URL сценария.

Если method установлен как "POST", переменные посылаются после заголовка HTTP POST.

Т.к. для большинства веб-серверов максимальная длина URL лежит между 255 и 1024 символами, при передаче больших объемов данных используйте "POST", а не "GET".

Из соображений безопасности loadVariables() действует только с хостами домена, из которого был загружен фильм. Правила, которым подчиняется loadVariables(), перечислены в следующей таблице.

Исходный домен фильма Как подключиться Разрешено?
www.domainname.ru www.domainname.ru Да
www.domainname.ru othe.domainname.ru Да
www.domainname.ru www.domainname-else.ru Нет
www.domainname.ru domainname.ru Да
domainname.ru www.domainname.ru Да

Эти меры безопасности оказывают воздействие только на подключаемые модули и на элементы ActiveX браузера Flash Player; автономный проигрыватель может загружать переменные из любого домена.

Ограничения на домены являются умышленной защитной функцией во Flash, но их можно обойти с помощью прокси-сценария, выполняемого на сайте X, действующего как посредник между Flash и сайтом Y, или псевдонима DNS на сайте X, который указывает на сайт Y. Дополнительную информацию по данному вопросу можно получить по адресу: https://www.macromedia.com/support/flash/ts/documents/loadvars_security.htm.

Результаты многократных обращений loadVariables() по одному и тому же URL сценария могут некоторыми браузерами кэшироваться, в результате чего новые данные с сервера не загружаются. Чтобы избежать этой проблемы, добавляйте в каждый вызов loadVariables() фиктивную переменную, чтобы URL оказался уникальным.

Пример: Генерация уникального URL.

loadVariables("https://www.mysite.ru/myScript.php?var="
   + getTimer(), serverResponse);

Использование обработчика события data с функцией loadVariables().

Если у сервера запрашивается ряд переменных с помощью функции loadVariables(), необходимо дождаться их полной загрузки, прежде чем использовать содержащиеся в них данные.

Когда клип получает всю группу загружаемых переменных, генерируется событие data, которое указывает, что можно выполнять код, зависящий от этих переменных.

Допустим, например, что имеется фильм гостевой книги, в которую пользователи вводят свои комментарии, а эти комментарии сохраняются на сервере. Если пользователь хочет просмотреть комментарий, тот запрашивается с сервера с помощью loadVariables(). Но прежде чем начать вывод комментария, необходимо сделать остановку на экране загрузки, пока не станет известно, что запрошенные данные доступны. Обработчик события data извещает о том, что данные загружены, после чего можно вывести комментарий пользователю.

В нижеприведенном примере приведен отрывок кода гостевой книги, показывающий использование обработчика события data с функцией loadVariables(). В этом примере есть кнопка, с помощью которой две переменные в кодировке URL загружаются из текстового файла в клип. В клипе имеется обработчик события data, который выполняется, когда эти две переменные загружены. Обработчик отображает значения этих двух переменных. Безопасность вывода этих двух переменных гарантируется тем, что код обработчика выполняется только при генерации события data (т.е. после получения данных).

Пример: Ожидание события data.

// Содержимое файла guest.txt
name=Jon&message=hello

// Кнопка внутри клипа
on (release) {
  this.loadVariables("guest.txt");
}

// Обработчик в клипе
onClipEvent (data) {
  trace(name);
  trace(message);
}

Ошибки в реализации:

Метод POST не поддерживается в Internet Explorer 4.5 для Macintosh. Эта проблема была исправлена в версии 5 браузера.

Совместимость:

Используется с 4-ой версии Flash

Добавить страницу в закладки:
РАЗРЕШАЕТСЯ перепечатывать и копировать информацию ТОЛЬКО ПРИ РАЗМЕЩЕНИИ ссылки на оригинал!
(<A href="https://www.spravkaweb.ru/">Справочник Web-языков</A>)
другие проекты
Rambler\'s Top100 Индекс цитирования