В ActionScript 3.0 SWF-файлы загружаются с помощью класса Loader. Чтобы загрузить внешний SWF-файл, код ActionScript должен выполнить четыре действия:
-
создать новый объект URLRequest с URL-адресом файла;
-
создать новый объект Loader;
-
вызвать метод
load()
объекта Loader, передав в качестве параметра экземпляр URLRequest.
-
вызвать метод
addChild()
для контейнера экранных объектов (такого как основная временная шкала документа Flash), чтобы добавить экземпляр Loader в список отображения.
В итоге код выглядит следующим образом:
var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);
Этот же код можно использовать для загрузки графических файлов, например изображений в формате JPEG, GIF или PNG. Для этого нужно указать URL-адрес изображения, а не SWF-файла. В отличие от изображения, SWF-файл может содержать ActionScript. Таким образом, несмотря на сходство процессов загрузки SWF-файла и изображения, при загрузке внешнего SWF-файла оба SWF-файла, загружаемый и загружающий, должны находиться в одной изолированной программной среде, если SWF воспроизводится в Flash Player или AIR и для работы с внешним SWF-файлом планируется использовать ActionScript. Кроме того, если внешний SWF-файл содержит классы из того же пространства имен, что и классы в загружающем SWF-файле, возможно, потребуется создать новый домен приложения для загружаемого SWF-файла, чтобы предотвратить конфликты пространства имен. Дополнительные сведения по безопасности и рекомендации по домену программы см. в разделах «
Работа с доменами приложений
» и «
Загрузка содержимого
».
После успешной загрузки внешний SWF-файл можно получить через свойство
Loader.content
. Если внешний SWF-файл опубликован для ActionScript 3.0, это будет фрагмент ролика или спрайт в зависимости от того, какой класс он расширяет.
В среде Adobe AIR для iOS загрузка SWF-файла имеет некоторые отличия по сравнению с другими платформами. Дополнительные сведения см. в разделе
Загрузка SWF-файлов в среде AIR для iOS
.
Особенности загрузки SWF-файлов предыдущих версий
Если внешний SWF-файл опубликован с помощью одной из предшествующих версий ActionScript, следует учитывать важные ограничения. В отличие от SWF-файла версии ActionScript 3.0, выполняемого в среде AVM2 (ActionScript Virtual Machine 2), SWF-файл, опубликованный для ActionScript 1.0 или 2.0, выполняется в среде AVM1 (ActionScript Virtual Machine 1).
Между загрузкой SWF-файла ActionScript 1.0 или 2.0 в SWF-файл ActionScript 3.0 по сравнению с загрузкой SWF-файла ActionScript 3.0 имеются важные различия. Проигрыватель Flash Player обеспечивает полную обратную совместимость с ранее опубликованным содержимым. Любое содержимое, работающее в предыдущих версиях Flash Player, работает и в версиях Flash Player, поддерживающих ActionScript 3.0. Тем не менее, существует ряд ограничений.
-
Код ActionScript 3.0 может загружать SWF-файл, написанный на языке ActionScript 1.0 или 2.0. После того как SWF-файл, написанный на языке ActionScript 1.0 или 2.0, будет успешно загружен, загруженный объект (свойство
Loader.content
) становится объектом AVM1Movie. Экземпляр AVM1Movie отличается от экземпляра MovieClip. Это экранный объект, но, в отличие от фрагмента ролика, он не включает методов и свойств, связанных с временной шкалой. Родительский SWF-файл версии AVM2 не может иметь доступа к свойствам, методам или объектам загруженного объекта AVM1Movie.
-
SWF-файлы, написанные в ActionScript 1.0 или 2.0, не могут загружать SWF-файлы, написанные в ActionScript 3.0. Это означает, что SWF-файлы, созданные в Adobe Flash 8 или Flex Builder 1.5, а также в более ранних версиях этих программ, не смогут загружать SWF-файлы в ActionScript 3.0.
Единственным исключением из этого правила является то, что SWF-файл ActionScript 2.0 может заменить себя SWF-файлом ActionScript 3.0, если для этого SWF-файла ActionScript 2.0 не выполнялась какая-либо загрузка ни на один из его уровней. В SWF-файле ActionScript 2.0 это можно выполнить с помощью вызова
loadMovieNum()
, передав значение 0 параметру
level
.
-
В общем случае для SWF-файлов, написанных в ActionScript 1.0 или 2.0, необходимо выполнять перенос, если их предполагается использовать совместно с SWF-файлами ActionScript 3.0. Например, предположим, что создается проигрыватель мультимедийных данных с помощью ActionScript 2.0. Этот проигрыватель загружает различное содержимое, которое также было создано с помощью ActionScript 2.0. Нельзя создать новое содержимое в ActionScript 3.0 и загрузить его в этот проигрыватель мультимедийных данных. Необходимо выполнить перенос видеопроигрывателя в ActionScript 3.0.
Однако если проигрыватель мультимедийных данных создан в ActionScript 3.0, он сможет выполнять отдельные загрузки содержимого ActionScript 2.0.
В следующих таблицах показаны ограничения предыдущих версий проигрывателя Flash Player в отношении загрузки более нового содержимого и выполнения программного кода, а также ограничения для взаимодействия между сценариями в SWF-файлах, написанных в различных версиях ActionScript.
Поддерживаемые функции
|
Flash Player 7
|
Flash Player 8
|
Для Flash Player 9 и 10
|
Может загружать SWF-файлы, опубликованные для
|
7 или более ранней версии
|
8 или более ранней версии
|
9 (или 10) и более ранних
|
Содержит этот AVM
|
AVM1
|
AVM1
|
AVM1 и AVM2
|
Выполняет SWF-файлы, записанные в ActionScript
|
1.0 и 2.0
|
1.0 и 2.0
|
1.0, 2.0 и 3.0
|
В следующей таблице «Поддерживаемые функции» относится к содержимому, выполняемому в проигрывателях Flash Player 9 или более поздней версии. Содержимое, выполняемое в проигрывателе Adobe Flash Player 8 или более ранней версии, может быть загружено, просмотрено и выполнено, а также использовано при вызове из других сценариев только в ActionScript 1.0 и 2.0.
Поддерживаемые функции
|
Содержимое, созданное в ActionScript 1.0 и 2.0
|
Содержимое, созданное в ActionScript 3.0
|
Может загружать и выполнять программный код в содержимом, созданном в
|
ActionScript 1.0 и 2.0
|
ActionScript 1.0 и 2.0, а также ActionScript 3.0
|
Может вызывать из сценариев содержимое, созданное в
|
ActionScript 1.0 и 2.0 (ActionScript 3.0 через LocalConnection)
|
ActionScript 1.0 и 2.0 через LocalConnection.
ActionScript 3.0
|
|
|
|