Работа с доменами приложенийFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий Класс ApplicationDomain предназначен для хранение таблицы определений ActionScript 3.0. Все программные коды в SWF-файле определены для существования в домене приложения. Домены приложений служат для разделения классов, находящихся в одном домене безопасности. Это обеспечивает возможность существования нескольких определений одного класса, а также позволяет дочерним элементам повторно использовать определения родительских элементов. Домены приложений можно использовать при загрузке внешних SWF-файлов, написанных на языке ActionScript 3.0, с помощью API-интерфейса класса Loader. (Обратите внимание, что домены приложений нельзя использовать для загрузки изображений или SWF-файлов, написанных на языке ActionScript 1.0 или ActionScript 2.0.) Все определения ActionScript 3.0 в загруженном классе хранятся в домене приложения. Загружая SWF-файл, можно включить его в тот же домен приложения, что и объект Loader, задав для параметра applicationDomain объекта LoaderContext значение ApplicationDomain.currentDomain. Разместив загруженный SWF-файл в том же домене приложений, можно вызывать его классы напрямую. Это полезно, если в загружаемом SWF-файле есть встроенное мультимедийное содержимое, которое можно получить через соответствующие имена классов, или если требуется получить доступ к методам загруженного SWF-файла. В следующем примере показано, что имеется доступ к отдельному файлу Greeter.swf, который определяет публичный метод с именем welcome(): package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
public class ApplicationDomainExample extends Sprite
{
private var ldr:Loader;
public function ApplicationDomainExample()
{
ldr = new Loader();
var req:URLRequest = new URLRequest("Greeter.swf");
var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
ldr.load(req, ldrContext);
}
private function completeHandler(event:Event):void
{
var myGreeter:Class = ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
var myGreeter:Greeter = Greeter(event.target.content);
var message:String = myGreeter.welcome("Tommy");
trace(message); // Hello, Tommy
}
}
}
Дополнительные сведения см. в примере класса ApplicationDomain в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform. При работе с доменами приложений следует помнить следующее.
На следующей схеме показано приложение, которое загружает содержимое из разных SWF-файлов в одном домене, domain1.com. В зависимости от загружаемого содержимого, можно использовать разные домены приложений. Далее описывается логика назначения соответствующего домена приложения для каждого SWF-файла в приложении. Основным файлом приложения является application1.swf. Он содержит объекты Loader, которые загружают содержимое из других SWF-файлов. По данному сценарию текущий домен приложения — Application domain 1 (Домен приложения 1). Использования А, B и C демонстрируют разные методы назначения соответствующего домена приложения для каждого SWF-файла в приложении.
|
|