Справочник по Flash - white cat
Шрифт:
Интервал:
Закладка:
Примеры:
Пример: Прикрепление переменных к текущей временной диаграмме.
loadariables("myVars.txt", "");// Загружаем переменные из myVars.txt// в текущую временную диаграмму
Вне зависимости от того, будут ли загружаемые переменные находиться в текстовом файле, или из создает сценарий, они должны иметь формат, соответствующий кодировке URL:
Следующий пример покажет содержимое текстового файла, импортируемого во 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(), перечислены в следующей таблице.
Эти меры безопасности оказывают воздействие только на подключаемые модули и на элементы ActiveX браузера Flash Player; автономный проигрыватель может загружать переменные из любого домена.
Ограничения на домены являются умышленной защитной функцией во Flash, но их можно обойти с помощью прокси-сценария, выполняемого на сайте X, действующего как посредник между Flash и сайтом Y, или псевдонима DNS на сайте X, который указывает на сайт Y. Дополнительную информацию по данному вопросу можно получить по адресу: http://www.macromedia.com/support/flash/ts/documents/loadvars_security.htm.
Результаты многократных обращений loadVariables() по одному и тому же URL сценария могут некоторыми браузерами кэшироваться, в результате чего новые данные с сервера не загружаются. Чтобы избежать этой проблемы, добавляйте в каждый вызов loadVariables() фиктивную переменную, чтобы URL оказался уникальным.
Пример: Генерация уникального URL.
loadVariables("http://www.mysite.ru/myScript.php?var=" + getTimer(), serverResponse);
Использование обработчика события data с функцией loadVariables().
Если у сервера запрашивается ряд переменных с помощью функции loadVariables(), необходимо дождаться их полной загрузки, прежде чем использовать содержащиеся в них данные.
Когда клип получает всю группу загружаемых переменных, генерируется событие data, которое указывает, что можно выполнять код, зависящий от этих переменных.
Допустим, например, что имеется фильм гостевой книги, в которую пользователи вводят свои комментарии, а эти комментарии сохраняются на сервере. Если пользователь хочет просмотреть комментарий, тот запрашивается с сервера с помощью loadVariables(). Но прежде чем начать вывод комментария, необходимо сделать остановку на экране загрузки, пока не станет известно, что запрошенные данные доступны. Обработчик события data извещает о том, что данные загружены, после чего можно вывести комментарий пользователю.
В нижеприведенном примере приведен отрывок кода гостевой книги, показывающий использование обработчика события data с функцией loadVariables(). В этом примере есть кнопка, с помощью которой две переменные в кодировке URL загружаются из текстового файла в клип. В клипе имеется обработчик события data, который выполняется, когда эти две переменные загружены. Обработчик отображает значения этих двух переменных. Безопасность вывода этих двух переменных гарантируется тем, что код обработчика выполняется только при генерации события data (т.е. после получения данных).
Пример: Ожидание события data.
// Содержимое файла guest.txtname=Jon&message=hello// Кнопка внутри клипаon (release) { this.loadVariables("guest.txt");}// Обработчик в клипеonClipEvent (data) { trace(name); trace(message);}
Ошибки в реализации:
Метод POST не поддерживается в Internet Explorer 4.5 для Macintosh. Эта проблема была исправлена в версии 5 браузера.
Совместимость:
Используется с 4-ой версии Flash
loadVariablesNum - Прикрепляет группу внешних переменных к уровню документа
loadVariablesNum
(Глобальная функция)
Прикрепляет группу внешних переменных к уровню документа
Синтаксис:
loadVariablesNum (url, level); loadVariablesNum (url, level, method);
Аргументы:
Функция loadVariablesNum() почти идентична loadVariables(), но требует задания целевого level как числа, а не как строки. Это значит, что loadVariablesNum() может прикреплять переменные только к уровням документов, а не к клипам. Целевой уровень можно задавать динамически.
Примеры
Пример: Задание целевого уровня динамически.
var myLevel = 3;loadVariablesNum("Vars.txt", myLevel);
Того же самого эффекта можно добиться путем конкатенации строк и использования обычной функции loadVariables().
loadVariables("Vars.txt", "_level" + myLevel);
Совместимость:
Используется с 5-ой версии Flash
print - Вывод на печать кадров фильма или клипа с использованием векторной графики
(Глобальная функция)
Вывод на печать кадров фильма или клипа с использованием векторной графики
Синтаксис:
print(target, boundingBox)
Аргументы:
Печать фильма Flash с помощью встроенной функции печати браузера происходит не единообразно и часто дает опечатки низкого качества. С помощью функции print() можно печатать содержимое фильма точно и с высоким качеством прямо из Flash. По умолчанию print() отправляет на печать все кадры с временной диаграммы target, по одному кадру на страницу, обрезая их в соответствии с аргументом boundingBox. Для печати избранных кадров им присваивается метка #P.
Функция print() посылает на PostScript-принтеры непосредственно векторную графику, а на принтеры без поддержки PostScript - графику, преобразованную в растровые изображения. Так как print() использует векторы, с ее помощью нельзя печатать фильм с преобразованиями прозрачности или цвета. Для печати фильмов с цветовыми эффектами используется функция printAsBitmap().
Во Flash r20 и выше возможности различных функций print() Flash 5 доступны в виде модифицированного действия getURL() Action. За подробностями обращайтесь к Macromedia Flash Printing SDK по адресу:http://www.macromedia.com/software/flash/open/webprinting/authoring.html
Примеры:
Пример: Распечатка фильма.
// Напечатать все кадры главной временной диаграммы,// задав размер каждого из них так, чтобы он занимал всю страницуprint("_root", "bframe");// Напечатать все кадры главной временной диаграммы,// изменив размер каждого соответственно общему размеру всех кадровprint("_root", "bmax");
При щелчке по кнопке со следующим кодом Flash выводит на печать все кадры на временной диаграмме кнопки, обрезанные по рамке границ кадра с меткой #b и с размером на всю страницу:
on (release) { print(this, "bmovie");}
Совместимость:
Используется с 5-ой версии Flash
printNum - Печать кадров уровня документа как векторных изображений
printNum
(Глобальная функция)
Печать кадров уровня документа как векторных изображений
Синтаксис:
printNum(level, boundingBox)
Аргументы:
Функция printNum() почти идентична print(), но требует задания целевого уровня level для операции печати в виде числа, а не строки. Это означает, что printNum() может печатать только уровни документов, а не клипы фильмов. Обычно она используется, когда нужно динамически назначить выводимый на печать уровень фильма.