Загрузка содержимогоFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий Содержимое Flash Player и AIR может загружать различные типы другого содержимого, включая следующие:
Загрузка SWF-файлов и изображений с помощью класса LoaderДля загрузки SWF-файлов и изображений (JPG, GIF или PNG) используется класс Loader. Все SWF-файлы, кроме находящихся в локальной изолированной программной среде файловой системы, могут загружать SWF-файлы с любого сетевого домена. Загружать SWF-файлы и изображения из локальной файловой системы могут только SWF-файлы, находящиеся в локальных изолированных программных средах. Однако файлы из локальной изолированной программной среды с сетевым подключением могут загружать только те локальные SWF-файлы, которые находятся в локальной доверенной среде или в локальной среде с сетевым подключением. SWF-файлы из локальной изолированной программной среды с сетевым подключением могут загружать локальное содержимое (например, изображения), кроме SWF-файлов, но не могут получать его данные. Возможно, при загрузке SWF-файла из ненадежного источника (такого как домен, не являющийся доменом корневого SWF-файла объекта Loader) потребуется определить маску для объекта Loader, чтобы предотвратить отрисовку загруженного содержимого (например, дочернего элемента объекта Loader) в областях рабочей области, находящихся за пределами этой маски, как показано в следующем коде. import flash.display.*; import flash.net.URLRequest; var rect:Shape = new Shape(); rect.graphics.beginFill(0xFFFFFF); rect.graphics.drawRect(0, 0, 100, 100); addChild(rect); var ldr:Loader = new Loader(); ldr.mask = rect; var url:String = "http://www.unknown.example.com/content.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr); При вызове метода load() объекта Loader можно указать параметр context, представленный объектом LoaderContext. Класс LoaderContext включает три свойства, которые позволяют определить контекст применения загруженного содержимого.
Дополнительные сведения см. в разделе «Указание контекста загрузки». Важным свойством объекта Loader является свойство contentLoaderInfo, представленное объектом LoaderInfo. В отличие от большинства других объектов, LoaderInfo совместно используется загружающим SWF-файлом и загружаемым содержимым и постоянно доступен для обеих сторон. Когда загружается SWF-файл, он может получить доступ к объекту LoaderInfo через свойство DisplayObject.loaderInfo. Объекты LoaderInfo содержат сведения, такие как прогресс загрузки, URL-адреса загружающего и загружаемого файлов, отношения доверенности между файлами и прочее. Дополнительные сведения см. в разделе «Просмотр хода загрузки». Загрузка аудио- и видеосодержимогоЛюбому содержимому, за исключением содержимого в локальной изолированной программной среде файловой системы, разрешено загружать звуковые данные и видеоданные из сетевых источников с помощью методов Sound.load(), NetConnection.connect() и NetStream.play(). Только содержимое в локальной изолированной программной среде файловой системы и изолированной программной среде приложения AIR может загружать мультимедийное содержимое из локальной файловой системы. Только содержимое в локальной изолированной программной среде файловой системы, изолированной программной среде приложения AIR или локальной доверенной изолированной программной среде может получать доступ к данным в этих загруженных файлах. Существуют также и другие ограничения доступа к данным загруженного мультимедийного содержимого. Дополнительные сведения см. в разделе «Получение данных загруженного мультимедийного содержимого». Загрузка SWF-файлов и изображений путем добавления тега <img> в текстовое полеSWF-файлы и растровые изображения можно загружать в текстовые поля с помощью тега <img>, как показано ниже. <img src = 'filename.jpg' id = 'instanceName' > Доступ к загруженному таким образом содержимому можно получить с помощью метода getImageReference() экземпляра TextField, как в следующем коде. var loadedObject:DisplayObject = myTextField.getImageReference('instanceName'); Однако следует учесть, что SWF-файлы и изображения, загруженные таким образом, помещаются в изолированную программную среду их источника. Когда графический файл загружается с помощью тега <img> в текстовом поле, доступ к данным изображения можно получить только с помощью файла политики URL-адресов. Чтобы проверить наличие файла политики, следует добавить атрибут checkPolicyFile для тега <img>, как в следующем коде. <img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' > Если SWF-файл загружается с помощью тега <img> в текстовом поле, доступ к данным этого файла можно открыть, вызвав метод Security.allowDomain(). Когда для загрузки внешнего файла используется тег <img> в текстовом поле (в отличие от использования класса Bitmap, встроенного в SWF-файл), автоматически создается объект Loader, являющийся дочерним для объекта TextField, и внешний файл загружается в экземпляр Loader так же, как при загрузке файла с помощью объекта Loader в ActionScript. В данном случае метод getImageReference() возвращает автоматически созданный объект Loader. Для обращения к этому объекту Loader не требуется проверка безопасности, так как он находится в той же изолированной программной среде, что и вызывающий код. Однако правила обеспечения безопасности применяются, если для доступа к загруженному мультимедийному содержимому используется ссылка на свойство content объекта Loader. Если содержимое — это изображение, необходимо добавить файл политики URL-адресов, а если это SWF-файл, в его код необходимо добавить вызов метода allowDomain(). Adobe AIRВ изолированной программной среде приложения теги <img> в текстовых полях игнорируются с целью предотвращения атак фишинга. Кроме того, коду, выполняемому в изолированной программной среде приложения, запрещено вызывать метод allowDomain() класса Security. Содержимое, передаваемое с помощью серверов RTMPСервер Flash Media Server использует протокол RTMP (Real-Time Media Protocol) для размещения данных, аудио и видео. Это мультимедийное содержимое можно загрузить с помощью метода connect() класса NetConnection, передав URL-адрес RTMP в качестве параметра. Сервер Flash Media Server может запретить установку подключений и загрузку содержимого в зависимости того, какой домен запрашивает файл. Дополнительные сведения см. в интерактивной документации по Flash Media Server на странице www.adobe.com/go/learn_fms_docs_ru. Чтобы использовать методы BitmapData.draw() и SoundMixer.computeSpectrum() для извлечения графики и звуковых данных среды выполнения из потоков RTMP, необходимо разрешить доступ на сервере. Используйте свойства Client.videoSampleAccess и Client.audioSampleAccess языка ActionScript для сервера для разрешения доступа к определенным каталогам на сервере Flash Media Server. Дополнительные сведения см. в справочнике по серверному языку ActionScript. |
|