Macromedia Flash Professional 8. Графика и анимация
Шрифт:
Теперь привяжем к первому кадру анимации такой сценарий:
var nc = new NetConnection;
nc.connect(null);
var ns = new NetStream(nc);
vidExternai.attachVideo(ns);
ns.play("videos/introduction.flv");
Здесь мы используем для загрузки внешнего видеофайла экземпляры объектов NetConnection и NetScream. Подробное описание этих объектов можно найти в интерактивной справке Flash.
Загрузка Web-страниц
Напоследок
getURL ("<Интернет-адрес Web-страницы>" [, "<Цель>"]);
С первым параметром этого действия передается сам интернет-адрес загружаемой Web-страницы. Через второй, необязательный, параметр задается цель гиперссылки. Параметр цель имеет строковый тип и может принимать следующие значения:
"_blank" — Web-страница загрузится в отдельное окно Web-обозревателя;
"_parent" — Web-страница загрузится в родительский набор фреймов;
"_seif" — Web-страница загрузится в текущий фрейм (это значение параметра по умолчанию);
"_top" — Web-страница загрузится в текущее окно Web-обозревателя, заменив собой весь набор фреймов, если он есть.
Кроме того, можно передать со вторым параметром имя фрейма, в который должна быть загружена эта страница.
Вот пример сценария, привязанного к кнопке и загружающего Web-страницу сайта Macromedia в отдельное окно Web-обозревателя:
on (click) {
getURL("http://www.macromedia.com", "_blank");
}
Ограничения на доступ к внешним файлам
Интернет — небезопасное место. Вирусы, "троянские программы", мошеннические сайты — всего этого добра там более чем достаточно. И неудивительно, что создатели программ, работающих с Интернетом, встраивают в них различные средства, призванные хоть как-то обеспечить безопасность пользователя и его данных. Пусть даже ценой каких-то ограничений.
Не стал исключением и наш любимый Flash. Всеобщая озабоченность безопасностью (вполне, кстати, оправданная) отразилась и на нем. Разработчики фирмы Macromedia предусмотрели для своего детища множество ограничений на работу с внешними файлами. Рассмотрим эти ограничения.
Нужно сказать сразу, что внешние файлы во Flash можно загружать с любого интернет-адреса. Они будут нормально отображаться в окне проигрывателя Flash. Но если мы попытаемся получить доступ к экземплярам объектов, функциям или переменным, находящимся во внешнем файле, Flash сразу даст нам по рукам. Смотреть, дескать, смотрите, но руками не троньте!
Какие же внешние файлы можно "трогать руками"? Какие ограничения Flash накладывает на доступ к внешним файлам? А вот какие…
Прежде всего, файлы, которые желают "общаться" друг с другом на уровне сценариев,
Еще одно ограничение связано с протоколами HTTP 4 (HyperText Transport Protocol, транспортный протокол передачи гипертекста) и HTTPS5 (HyperText Transport Protocol Secured, защищенный транспортный протокол передачи гипертекста). (Протокол — это набор правил, согласно которым программы обмениваются данными по сети.) Если основной фильм был загружен по протоколу HTTP, а внешний — по протоколу HTTPS (или наоборот), то они не смогут получить доступ друг к другу через сценарии.
В предыдущей версии Flash (MX) описанные ограничения были непреодолимыми. Во Flash MX 2004 появилась возможность их преодолеть. Сейчас мы выясним, как это делается.
Пусть мы загрузили основной фильм с сервера http://www.somesite.ru. И пусть нам понадобилось загрузить с сервера http://somesite.ru внешний файл car.swf, поместить его на рабочий лист, а впоследствии иметь к нему доступ через сценарии. Для этого нам нужно будет использовать метод allowDomain объекта security, находящегося в объекте System. Формат его вызова таков:
System, security. allowDomain ("<Разрешенный интернет-адреc>");
В качестве единственного параметра этого метода передается интернет-адрес Web-сервера, с которого разрешена загрузка внешних файлов. После этого все файлы, загруженные с этого сервера, доступны из текущего фильма через сценарии.
В нашем случае нам нужно поместить в первый кадр анимации файла car.swf такой сценарий:
System.security.allowDomain("http://www.somesite.ru");
после чего все сценарии основного фильма, обращающиеся к файлу car.swf, будут работать.
Если основной фильм был загружен по протоколу HTTP, а внешний файл car.swf — по протоколу HTTPS, нам следует использовать метод allowinsecureDomain того же объекта. Формат вызова этого метода совпадает с форматом вызова метода allowDomain. А код необходимого сценария должен быть таким:
System.security.allowInsecureDomain("https://secured.somesite.ru");
_root.placeholder.loadMovie("https://secured.somesite.ru/car.swf");