Adobe - Flash - Platform Робота з доменами програм
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():
При роботі з доменами програм слід пам'ятати таке.
Усі програмні коди у файлі SWF визначені для існування в домені програми.Поточним доменомпрограмиє домен, де виконується основна програма.Системний доменмістить усі домени програм, включаючи поточний домен, і це означає, що він містить усі класи програвача Flash Player.
Усі домени додатків, крім системного, мають зв'язаний батьківський домен. Батьківським доменом для домену основної програми є системний домен. Завантажені класи визначаються лише у тому випадку, якщо вони вже не визначені у своїх батьківських класах. Не можна перезаписати визначення завантаженого класу новим визначенням.
На наступній схемі показано програму, яка завантажує вміст із різних SWF-файлів в одному домені, domain1.com. Залежно від вмісту, що завантажується, можна використовувати різні домени програм. Далі описується логіка призначення відповідного домену програми для кожного SWF-файлу в додатку.
Б. Використання В
B. Використання C
Основним файлом програми є application1.swf. Він містить об'єкти Loader, які завантажують вміст інших SWF-файлів. За даним сценарієм поточний домен програми — Application domain 1 (Домен програми 1). Використання А, B та C демонструють різні методи призначення відповідного домену програми для кожного SWF-файлу в додатку.
Використання А Дочірній файл SWF відокремлюється шляхом створення дочірнього елемента системного домену. На схемі домену Application domain 2 створюється як дочірній елемент системного домену. Файл application2.swf завантажується в домен Application domain 2, таким чином його визначення класів відокремлюються від класів, визначених у файлі application1.swf.
Цей прийом застосовується, щоб стара версія програми в динамічному режимі завантажила новішу версію, не створюючи конфлікту.Конфлікт немає, оскільки однойменні класи збережені окремо, у різних доменах додатків.
Наступний код створює домен програми, який є дочірнім елементом системного домену, і починає завантажувати файл SWF з використанням цього домену.
Використання До поточних визначень класів додаються нові. Як домен програми для module1.swf призначено поточний домен (Application domain 1). Це дозволяє додавати нові визначення класів до поточного набору визначень цієї програми. Цей метод можна використовувати для спільної спільної бібліотеки основної програми. SWF-файл, що завантажується, обробляється як віддалена загальна бібліотека (RSL). Використовуйте цей прийом для завантаження бібліотек RSL програмою попереднього завантаження до запуску програми.
Наступний код завантажує SWF-файл, призначаючи поточний домен як домен програми.
Використання C Батьківські визначення класів використовуються шляхом створення нового дочірнього домену для поточного домену. Домен програми для module3.swf є дочірній елемент поточного домену, і цей дочірній елемент використовує батьківські версії всіх класів. Цей метод можна використовувати для створення модуля багатоекранного мультимедійного інтернет-програми (RIA), завантаженого як дочірній елемент основної програми та використовує типи даних основної програми. Якщо є можливість забезпечити, щоб всі класи завжди оновлювалися для сумісності з більш ранніми версіями і щоб завантажувальний додаток був новіший за завантажені файли, то дочірні домени будуть використовувати батьківські версії. Створення нового домену програми також дозволяє вивантажувати всі визначення класів для складання сміття, якщо видалити всі посилання на дочірній SWF-файл.
Цей метод дозволяє завантаженим модулям спільно використовувати одиничні об'єкти та статичні елементи класу файлу, що завантажує.
Наступний код створює дочірній домен для поточного домену і починає завантаження SWF-файлу за допомогою нового домену додатків.