Динамическая загрузка содержимого для показаFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий В приложение на языке ActionScript 3.0 можно загрузить любые внешние активы для показа:
Загрузка этих активов производится с помощью класса Loader. Загрузка экранных объектовОбъекты Loader используются для загрузки SWF-файлов и файлов графики в приложение. Класс Loader — это подкласс класса DisplayObjectContainer. Объект Loader может содержать в своем списке отображения только один дочерний экранный объект, который представляет собой загружаемый SWF-файл или файл графики. При добавлении объекта Loader в список отображения (как в следующем коде) в него после завершения загрузки добавляется также загруженный дочерний экранный объект: var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); После загрузки SWF-файла или изображения можно переместить загруженный экранный объект в другой контейнер экранного объекта (например, в данном примере это container DisplayObjectContainer): import flash.display.*; import flash.net.URLRequest; import flash.events.Event; var container:Sprite = new Sprite(); addChild(container); var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded); function imgLoaded(event:Event):void { container.addChild(pictLdr.content); } Просмотр хода загрузкиПосле начала загрузки файла создается объект LoaderInfo. Объект LoaderInfo предоставляет информацию о процессе загрузки, URL-адресах загружающего объекта и загружаемого содержимого, общем количестве байтов для носителя, а также номинальной высоте и ширине содержимого. Объект LoaderInfo также отправляет события, позволяющие следить за ходом загрузки. На следующей диаграмме показаны различные применения объекта LoaderInfo (как экземпляр основного класса SWF-файла, как объект Loader и как объект, загруженный объектом Loader): Объект LoaderInfo можно вызвать как свойство одновременно объекта Loader и загруженного экранного объекта. Как только начнется загрузка, объект LoaderInfo можно вызвать с помощью свойства contentLoaderInfo объекта Loader. По завершении загрузки экранного объекта объект LoaderInfo можно также вызвать в качестве свойства загруженного экранного объекта с помощью свойства loaderInfo экранного объекта. Свойство loaderInfo загруженного экранного объекта относится к тому же объекту LoaderInfo, что и свойство contentLoaderInfo объекта Loader. Другими словами, объект LoaderInfo совместно используется загруженным объектом и загрузившим его объектом Loader. Чтобы вызвать свойства загруженного содержимого, необходимо добавить прослушиватель событий в объект LoaderInfo так, как это сделано в следующем коде: import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Circle.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); addChild(ldr); function loaded(event:Event):void { var content:Sprite = event.target.content; content.scaleX = 2; } Дополнительные сведения см. в разделе «Обработка событий». Указание контекста загрузкиПри загрузке внешнего файла в Flash Player или AIR с помощью метода load() или loadBytes() класса Loader можно при желании указать параметр context. Этот параметр является объектом LoaderContext. Класс LoaderContext включает три свойства, которые позволяют определить контекст применения загруженного содержимого.
Вот пример проверки наличия файла политики при загрузке растрового изображения из другого домена: var context:LoaderContext = new LoaderContext(); context.checkPolicyFile = true; var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/photo11.jpg"); var ldr:Loader = new Loader(); ldr.load(urlReq, context); Вот пример проверки наличия файла политики при загрузке SWF-файла из другого домена в целях размещения файла в той же изолированной программной среде, что и объект Loader. Кроме того, этот код добавляет классы в загруженном SWF-файле в тот же домен приложения, что и у объекта Loader: var context:LoaderContext = new LoaderContext(); context.securityDomain = SecurityDomain.currentDomain; context.applicationDomain = ApplicationDomain.currentDomain; var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf"); var ldr:Loader = new Loader(); ldr.load(urlReq, context); Дополнительные сведения см. в описании класса LoaderContext в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform. |
|