Руководство по actionscript. часть 3, стр. 106

1 В отличие от разрешений распространителя, разрешения создателя передаются вместе

A ti с SWF-файлом, для которого они установлены.

Метод allowDomain ( ) имеет следующий обобщенный вид:

Security. allowDomain Гдоиеяйли/РГ’, «доменИли! Р2″…. «доменИли! Рп»)

где «доменИли1Р1″ , «доменИли1Р2″ . . . «доменИли1Рп» — это список строк, содержащих доменные имена или IP-адреса разрешенных источников. SWF-файл, загруженный из разрешенного источника, может выполнять операции кросс-скриптинга над SWF-файлом, вызвавшим метод allowDomain ( ).

Как и в случае с файлами политики безопасности, символ * обозначает подстановочный символ. Например, следующий код разрешает доступ для всех источников (то есть любой SWF-файл из любого источника может выполнять кросс-скриптинг SWF-файла, который содержит следующую строку кода):

Securi ty. al1owDomai n(«*»);

Чтобы включить локальную область действия в список разрешенных источников, в качестве разрешаемого домена в метод allowDomain ( ) должен передаваться символ * (любой источник). Например, SWF-файл, желающий разрешить операцию кросс-скриптинга для локальных SWF-файлов с поддержкой сети, должен указать символ * в качестве разрешаемого домена.

Тем не менее, когда символ * используется в параметрах метода allowDomain ( ), он не может применяться в качестве подстановочного символа поддомена (это слегка необычное поведение отличается от использования группового символа в файлах политики безопасности). Например, следующий код не разрешает доступ для всех поддоменов сайта example. com:

// Внимание: Не используйте этот код! Подстановочные символы поддоменов // не поддерживаются.

Securi ty. al1owDomai n(«*.example. com»);

Сразу после вызова метода allowDomain ( ) любой SWF-файл из разрешенного источника может немедленно приступать к выполнению разрешенных операций. Предположим, что телевизионная сеть использует универсальное приложение для воспроизведения анимации, которое размещается на сайте www. sometvnetwork. com. Проигрыватель загружает анимационные ролики в формате SWF с сайта animation. sometvnetwork. com. Для управления воспроизведением загруженных роликов проигрыватель вызывает основные методы класса MovieClip (play ( ), stop ( ) и т. д.) над этими роликами. Поскольку проигрыватель и анимационные ролики загружаются из различных поддоменов, проигрыватель должен получить разрешение на вызов методов класса MovieCl ip над роликами. Таким образом, каждый конструктор основного класса анимационного ролика включает следующую строку кода, которая предоставляет необходимое разрешение проигрывателю:

Securi ty. allowDomai n(«www. sometvnetwork. com», «sometvnetwork. com»);

Обратите внимание, что, поскольку проигрыватель может быть открыт из источника www. sometvnetwork. com или sometvnetwork. com, анимационные файлы разрешают доступ для обоих доменов. Для загрузки анимационных роликов проигрыватель использует следующий код:

var loader-.Loader = new Loader( ); loader. load(

new URLRequest(«http://animation. sometvnetwork. com/названиеАнимации. swf»));

Сразу после выполнения конструктора основного класса анимационного ролика проигрыватель может приступать к управлению загруженным роликом.

Руководство по actionscript. часть 3, стр. 107

I Чтобы гарантировать, что разрешения на выполнение операций кросс-скриптинга будут пре-*v j „ доставлены фазу после инициализации БУУРфайла, вызывайте метод Security. allowDomain() Ъ-У внутри метода-конструктора основного класса этого SWF-файла.

SWF-файл может определить, есть ли у него разрешение на выполнение операций кросс-скриптинга над загруженным SWF-файлом, проверив значение переменной childAllowsParent объекта Loader Info загруженного файла.

Дополнительную информацию о загрузке SWF-файлов можно найти в гл. 28. Информацию по вызову методов клипа над загруженными SWF-файлами можно получить в разд. «Проверка типов на этапе компиляции для динамически загружаемых элементов» гл. 28.

Разрешение операций кросс-скриптинга над SWF-файлами, загружаемыми по протоколу HTTPS, для файлов, загружаемых по протоколу HTTP. Когда SWF-файл загружается по протоколу HTTPS, приложение Flash Player запрещает вызов метода allowDomain ( ), разрешающий доступ для источников, не использующих протокол HTTPS. Тем не менее разработчики, желающие разрешить доступ для источников, не использующих протокол HTTPS, из SWF-файла, загружаемого по протоколу HTTPS, могут, соблюдая должную осторожность, использовать метод Security. allowInsecureDomain ( ).

Разрешение доступа для источника, не использующего протокол HTTPS, из SWF-файла, загружаемого по протоколу HTTPS, считается угрожающе опасным и категорически не рекомендуется.

Синтаксис и использование метода allowInsecureDomain ( ) такие же, как и у метода allowDomain ( ), рассмотренного в предыдущем разделе. Единственное отличие заключается в том^ что метод allowInsecureDomain ( ) позволяет разрешить доступ для источников, не использующих протокол HTTPS, из SWF-файла, загружаемого по протоколу HTTPS. В подавляющем большинстве ситуаций для предоставления разрешений создателя следует использовать метод allowDomain ( ) вместо allowInsecureDomain ( ). Найти описание особых ситуаций, требующих использования метода allowInsecureDomain ( ), можно в разделе, посвященном методу Security. allowInsecureDomain ( ), справочника по языку ActionScript корпорации Adobe.

Импортирующая загрузка

В гл. 28 будет рассказано, как SWF-файл родителя может особым образом загрузить SWF-файл ребенка, что позволит родителю непосредственно использовать классы ребенка так, будто они определены в родителе. Эта методика требует, чтобы SWF-файл родителя импортировал классы SWF-файла ребенка в свой домен приложения. Рассмотрим базовый код, который должен включать SWF-файл родителя (обратите внимание на использование переменной экземпляра applicationDomain класса LoaderContext):

var loaderContext:LoaderContext = new LoaderContext( ):

1oaderContext. appli cati onDomai n = Appli cati onDomai n. currentDomai n;

var loader:Loader = new Loader( ):

loader, load (new URLRequest (» ребенок, svif»), loaderContext):

При выполнении приведенного кода попытка импортировать классы ребенка в домен приложения родителя будет заблокирована системой безопасности приложения Flash Player в следующих ситуациях:

? если SWF-файл родителя и SWF-файл ребенка загружены из различных удаленных регионов удаленной области действия;

? если SWF-файл родителя загружен из локальной области действия и имеет тип безопасности песочницы, отличный от типа безопасности песочницы SWF-файла ребенка.

Руководство по actionscript. часть 3, стр. 108

В первом случае распространитель SWF-файла ребенка может использовать файл политики безопасности, чтобы предоставить разрешение SWF-файлу родителя на импорт классов SWF-файла ребенка. Ниже представлены шаги, которые должны выполнить распространитель SWF-файла ребенка и создатель SWF-файла родителя.

1. Распространитель SWF-файла ребенка должен разместить файл политики безопасности, разрешающий доступ для источника SWF-файла родителя, как было описано в разд. «Разрешения распространителя (файлы политики безопасности)».

2. Если файл политики безопасности находится не в применяемом по умолчанию местоположении, родитель должен загрузить его вручную, используя метод Security. loadPolicyFile ( ), опять же как было описано в разд. «Разрешения распространителя (файлы политики безопасности)».

3. При загрузке SWF-файла ребенка SWF-файл родителя должен передать в метод load ( ) объект LoaderContext, переменной securityDomain которого присвоено значение flash. system. SecurityDomain. currentDomain.

Предположим, что на сайте site-a. com размещен следующий используемый по умолчанию файл политики безопасности, который разрешает доступ для источников site-b. com и www. site-b. com.


SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>





Теперь предположим следующее: файл site-b. com/parent. swf желает импортировать классы файла site-a. com/child. swf в свой домен приложения. Для этого файл site-b. com/parent. swf использует следующий код (обратите внимание, что метод Security. loadPolicyFile ( ) не используется, поскольку файл политики безопасности находится в используемом по умолчанию местоположении файла политики безопасности):

var loaderContext:LoaderContext = new LoaderContext( ):

1oaderContext. appli cati onDomai n = Applicati onDomai n. currentDomai n;

loaderContext. securityDomain = SecurityDomain. currentDomain:

1 oader.1oad(new URLRequest(«http://site-a. com/chi1d. swf»), 1oaderContext):

Использование переменной securityDomain для получения разрешения распространителя на импорт классов SWF-файла в домен приложения (как показано в предыдущем коде) называется импортирующей загрузкой.

Руководство по actionscript. часть 3, стр. 109

Стоит отметить, что, когда некоторый файл а. swf применяет импортирующую загрузку для загрузки другого файла b. swf, приложение Flash Player считает, будто файл b. swf был сначала скопирован, а затем загружен непосредственно с сайта файла а. swf. Таким образом, к файлу b. swf применяются привилегии безопасности файла а. swf, а исходные привилегии безопасности файла b. swf, связанные с его реальным источником, аннулируются. Например, файл b. swf теряет возможность обращаться к ресурсам из своего реального источника с помощью относительных URL-адресов. Следовательно, при использовании импортирующей загрузки всегда проверяйте функционирование загруженного SWF-файла.

Импортирующая загрузка не требуется в следующих ситуациях, поскольку SWF-файлу родителя, по сути, разрешается импортировать классы SWF-файла ребенка в свой домен приложения:

? локальный SWF-файл импортирует классы из другого локального SWF-файла с таким же типом безопасности песочницы;

? удаленный SWF-файл импортирует классы из другого удаленного SWF-файла, находящегося в том же регионе.

Механизмы обращения к классам в загруженных SWF-файлах рассматриваются в гл. 28 и 31.

Обработка нарушений безопасности

В этой главе мы рассмотрели несколько правил безопасности, которые влияют на способность SWF-файла выполнять различные операции языка ActionScript. Когда операция не может быть выполнена из-за нарушения правила безопасности, среда выполнения либо генерирует исключение SecurityError, либо осуществляет диспетчеризацию события SecurityErrorEvent. SECURITY_ERROR.

Исключение SecurityError генерируется в том случае, когда можно сразу определить, что операция нарушает правило безопасности. Например, если локальный SWF-файл с поддержкой файловой системы пытается открыть сокетное соединение, среда выполнения ActionScript немедленно выявляет факт нарушения безопасности и генерирует исключение SecurityError.

В отличие от этого, диспетчеризация события SecurityErrorEvent. SECURITY_ERROR происходит в том случае, когда после ожидания завершения некоторой асинхронной задачи среда Flash определяет, что было нарушено правило безопасности. Например, когда локальный SWF-файл с поддержкой сети использует метод экземпляра load ( ) класса URLLoader для загрузки файла из удаленной области действия,

среда Flash должна асинхронно проверить наличие подходящего файла политики безопасности, разрешающего операцию загрузки. Если операция проверки файла политики безопасности завершится неудачей, среда Flash выполнит диспетчеризацию события SecurityErrorEvent. SECURITY_ERROR (заметьте — не исключение SecurityError).

В отладочной версии приложения Flash Player выявить необработанные исключения SecurityError и события SecurityErrorEvent. SECURITY_ERRORочень просто. Всякий раз, когда возникает данное исключение или событие, приложение Flash Player выводит окно, в котором описывается возникшая проблема. Отладочная версия приложения Flash Player абсолютно отличается от рабочей версии, в которой никакая информация о необработанных исключениях SecurityError и событиях SecurityErrorEvent. SECURITY_ERROR не отображается, поэтому выявить проблему может оказаться чрезвычайно сложно.

| Чтобы убедиться, что никакие нарушения безопасности не остались незамеченными, м?, 4 п всегда проверяйте код в отладочной версии приложения Flash Player. _ flft_

Для обработки ошибок безопасности используется инструкция try/catch/ finally. Для обработки событий SecurityErrorEvent. SECURITY_ERROR применяются приемники событий. Например, следующий код генерирует исключение SecurityError, пытаясь установить сокетное подключение к порту выше 65 535. При возникновении ошибки код добавляет сообщение о причине ее возникновения в объект TextField, отображаемый на экране.

var socket:Socket = new Socket( ): try {

socket-.connectCexample. com», 70000): } catch (e:SecurityError) { output. appendText(«Connection problem!\n»); output. appendText(e. message):

}

Подобным образом, пытаясь загрузить файл данных с сайта, не имеющего файла политики безопасности, локальный SWF-файл с поддержкой сети, содержащий следующий код, вызовет диспетчеризацию события SecurityErrorEvent. SECURI TY_ERROR. Перед тем как попытаться осуществить операцию загрузки, код регистрирует приемник события, который выполняется при диспетчеризации события SecurityErrorEvent. SECURITY_ERROR.

Руководство по actionscript. часть 3, стр. 110

Var urlloader:URLLoader = new URLLoader( ); // Регистрируем приемник события

urlloader. addEventListener(SecurityErrorEvent. SECURITY_ERROR,

securityErrorListener); // Вызываем нарушение безопасности

urlloader. load(new URLRequest(«http://www. example. com/index. xml»));

_Jf_

tf^ щ На момент издания этой книги на сайте example. com не было файла политики безопасно-УрРД сти, размещенного в местоположении, используемом по умолчанию, поэтому предыдущий ^ЙР2-1 код приводил к диспетчеризации события 5есигИуЕггогЕуеп^5ЕСиМТУ_ЁК1ЮК.

Приемник для предыдущего события SecurityErrorEvent. SECURITY_ERROR, код которого приведен ниже, добавляет сообщение о причине возникновения ошибки в объект TextField, отображаемый на экране, — output:

private function securityErrorListener (e:SecurityErrorEvent):void { output. appendText(«Loading problem!\n»): output. appendText(e. text):

}

Чтобы определить, может ли эта операция генерировать исключение SecurityError или приводить к диспетчеризации события SecurityErrorEvent. SECURI TY_ERROR, обратитесь к соответствующему разделу справочника по языку ActionScript корпорации Adobe. Описание каждой операции содержит список возможных исключений SecurityError под заголовком Throws (Генерирует) и список возможных событий SecurityErrorEvent. SECURITY_ERROR под заголовком Events (События).

В большинстве случаев класс, который определяет операцию, генерирующую событие SecurityErrorEvent. SECURITY_ERROR, одновременно является классом, в котором должны регистрироваться приемники событий. Например, класс URLLoader определяет операцию load ( ), которая может приводить к диспетчеризации событий SecurityErrorEvent. SECURI TY_ERROR. Приемники событий, обрабатывающие события SecurityErrorEvent. SECURITY_ERROR, вызванные методом экземпляра load ( ) класса URLLoader, регистрируются в том экземпляре класса URLLoader, над которым вызывается метод load ( ). Это демонстрирует следующий код:

// При использовании класса URLLoader регистрируйтесь на события // в экземпляре класса URLLoader. var urlloader:URLLoader = new URLLoader( ): url 1 oader. addEventLi stener(SecurityErrorEvent. SECURITY_ERROR,

securityErrorListener);

Однако в некоторых случаях класс, определяющий операцию, которая генерирует событие SecurityErrorEvent. SECURITY_ERROR, не является одновременно классом, в котором должны регистрироваться приемники событий. Например, класс Loader определяет операцию load ( ), которая может приводить к диспетчеризации событий SecurityErrorEvent. SECURITY_ERROR. Но приемники событий, обрабатывающие данные события, должны регистрироваться в экземпляре класса Loaderlnf о, ассоциированном с операцией load ( ), а не в экземпляре класса Loader, над которым вызывается метод load ( ). Как и раньше, это демонстрирует следующий код:

// При использовании класса Loader регистрируйтесь на события // в экземпляре класса Loaderlnfo. var loader:Loader = new Loader( );

1 oader. contentLoaderInfо. addEventLi stener(Securi tyErrorEvent. SECURITY_ERROR,

securityErrorListener);

Чтобы определить класс, в котором должны регистрироваться приемники событий SecurityErrorEvent. SECURITY_ERROR для данной операции, обратитесь к справочнику по языку ActionScript корпорации Adobe. В частности, эту информа-

цию можно найти в описании класса, определяющего операцию, которая приводит к диспетчеризации события SecurityErrorEvent. SECURITY_ERROR.

Руководство по actionscript. часть 3, стр. 111

Домены безопасности

В этом разделе вы получите общее представление о термине «домен безопасности» и его обычном эквиваленте «песочница безопасности», который часто применяется в документации корпорации Adobe и других сторонних источниках. В данной книге ни один из этих терминов не используется. Причины этого будут описаны далее.

Определенный SWF-файл и логический набор ресурсов, к которым этот SWF-файл может свободно обращаться, используя операции обращения к содержимому в виде данных, загрузки данных и кросс-скриптинга (в соответствии с табл. 19.3-19.6), вместе концептуально формируют группу, называемую доменом безопасности. В табл. 19.9 перечислены составляющие домена безопасности SWF-файла каждого из четырех типов безопасности песочниц.

• Не путайте понятия «тип безопасности песочницы» и «домен безопасности». Тип безопасности песочницы — это общий статус безопасности SWF-файла, а домен безопасности — это логический набор ресурсов. Тип безопасности песочницы SWF-файла на самом деле определяет домен безопасности этого файла во многом аналогично тому, как уровень доступа сотрудника компании может определять доступные зоны в здании компании.

Таблица 19.9. Домены безопасности по типу безопасности песочницы

Тип безопасности песочницы SWF-файла Составляющие домена безопасности

Удаленный Ресурсы в формате, отличном от формата SWF, из региона происхождения данного SWF-файла. SWF-файлы из региона происхождения данного SWF-файла

Локальный с поддержкой файловой системы Ресурсы в формате, отличном от формата SWF, в локальной области действия. Локальные SWF-файлы с поддержкой файловой системы в локальной области действия

Локальный с поддержкой сети Локальные SWF-файлы с поддержкой сети в локальной области действия

Локальный с установленным доверием Любые ресурсы в формате, отличном от формата SWF, в локальной и удаленной области действия. Локальные SWF-файлы с установленным доверием в локальной области действия

При обсуждении домены безопасности часто описываются в терминах регионов — метафорических безопасных зон. Таким образом, можно сказать, что SWF-файл принадлежит домену безопасности, находится в нем или помещается в свой домен безопасности. Подобным образом можно сказать, что ресурс доступен для SWF-файла, поскольку он принадлежит домену безопасности этого SWF-файла.

Существует всего четыре типа безопасности песочницы, однако для каждого из них есть множество доменов безопасности. Например, любой SWF-файл в удаленной

области действия имеет один и тот же тип безопасности песочницы — «удаленный». Но удаленный SWF-файл из источника site-a. com и удаленный SWF-файл из источника site-b. com являются частями двух различных доменов безопасности (один — для источника site-a. com, а другой — для источника site-b. com). Подобным образом любой SWF-файл из местоположения с установленным доверием в локальной области действия имеет один и тот же тип безопасности песочницы — «локальный с установленным доверием». Однако два локальных SWF-файла с установленным доверием из различных корпоративных локальных сетей являются частями двух различных доменов безопасности (каждый для своей локальной сети).

В документации корпорации Adobe при описании ресурсов, к которым имеет или не имеет доступ SWF-файл, часто используется термин «домен безопасности» (и его обычный эквивалент «песочница безопасности»).

Руководство по actionscript. часть 3, стр. 112

Двусмысленное использование термина «песочница». Как уже известно из предыдущего раздела, и в неофициальной литературе, посвященной безопасности приложения Flash Player, и в документации корпорации Adobe часто используется термин «песочница безопасности» и даже просто «песочница» в качестве обычного эквивалента формального термина «домен безопасности». Более того, в некоторых редких случаях, в неофициальной литературе и в документации корпорации Adobe также применяется термин «песочница безопасности» в качестве обычного эквивалента термина «тип безопасности песочницы».

~тСй? ПРИ чтении документации, посвященной безопасности, помните, что термин «песочница»

I-1 обычно используется для обозначения домена безопасности, а в некоторых случаях — для

обозначения типа безопасности песочницы.

Чтобы избежать подобной путаницы, в этой книге обычные термины «песочница безопасности» и «песочница» не используются вообще, а официальный термин «домен безопасности» используется только в случае крайней необходимости (например, при обсуждении внутреннего класса SecurityDomain). Кроме того, статус безопасности SWF-файла всегда описывается по отношению к типу безопасности песочницы этого SWF-файла. Ресурсы, к которым может обращаться SWF-файл, в этой книге перечисляются явным образом вместо использования общего термина «домен безопасности» для описания логической группы доступных ресурсов.

Например, рассмотрим такое предложение из раздела Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Security Sandboxes > Local sandboxes документации корпорации Adobe:

Local files that are registered as trusted are placed in the local-trusted sandbox.

Если использовать термины, которым отдается предпочтение в этой книге, предыдущая цитата будет звучать так: Локальным файлам, зарегистрированным в качестве файлов с установленным доверием, присваивается тип безопасности песочницы «локальный с установленным доверием».

Далее рассмотрим следующее предложение, на этот раз из раздела Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Accessing loaded media as data

документации корпорации Adobe:

By default, a SWF file from one security sandbox cannot obtain pixel data or audio data from graphic or audio objects rendered or played by loaded media in another sandbox.

Если использовать термины, которым отдается предпочтение в этой книге, приведенная цитата будет звучать так: По умолчанию SWF-файл из одного домена безопасности не может получать данные о пикселах либо аудиоданные из графических или звуковых объектов, отображаемых или воспроизводимых загрузившим их элементом за пределами данного домена безопасности.

Если значение термина «песочница» в документации корпорации Adobe или в неофициальных источниках кажется двусмысленным, сосредоточьте внимание на изученных типах безопасности песочниц, а также на разрешенных и запрещенных операциях. В противном случае просто попытайтесь выполнить желаемую операцию и используйте сообщения об ошибках, связанных с нарушением безопасности, которые генерируются компилятором или на этапе выполнения, чтобы определить, разрешена ли данная операция. Тем не менее, чтобы гарантировать, что будут отображены все сообщения обо всех возможных ошибках, связанных с нарушениями безопасности, следуйте рекомендациям, представленным ранее в подразд. «Для разработчиков доверие устанавливается автоматически» разд. «Выбор локального типа безопасности песочницы», и проводите тестирование в отладочной версии приложения Flash Player. Помните также, что вы можете проверить тип безопасности песочницы SWF-файла на этапе выполнения, получив значение переменной flash, system. Security. sandboxType. Знание типа безопасности песочницы SWF-файла поможет вам определить ограничения, накладываемые на этот SWF-файл приложением Flash Player.

Две распространенные проблемы разработки, связанные с безопасностью

При изучении этой главы мы рассмотрели множество ограничений безопасности и механизмов предоставления разрешений. Чтобы завершить наше изучение системы безопасности приложения Flash Player, рассмотрим два сценария, связанных с безопасностью, которые часто встречаются в типичном процессе разработки приложений на языке ActionScript: обращение к поддоменам Интернета и обращение к переменной экземпляра context класса Loader. В каждом сценарии описывается ограничение и соответствующий обходной путь для него.

Руководство по actionscript. часть 3, стр. 113

Обращение к поддоменам Интернета

Из представленной ранее табл. 19.3 известно, что удаленный SWF-файл может загружать данные только из своего удаленного региона происхождения. Из разд. «Локальная область действия, удаленная область действия и удаленные регионы» вы также узнали, что два различных поддомена Интернета, например www. example. com и games. example. com, считаются разными удаленными регионами. Таким образом, SWF-файл, загруженный из источника http://example. com, может загружать любой

файл данных, размещенный в источнике http://example. com, но не может загружать файлы данных, размещенные в любом другом домене, включая поддомены, например games. example. com. Как ни удивительно, но это означает, что SWF-файл, загруженный из источника http://example. com, не может использовать абсолютный URL-адрес для обращения к файлу, размещенному на сайте www. example. com. Для предоставления SWF-файлу, загруженному из источника example. com, разрешения на загрузку элементов с сайта www. example. com используется файл политики безопасности — этот механизм был рассмотрен ранее в разд. «Разрешения распространителя (файлы политики безопасности)».

Следующая последовательность шагов описывает действия владельца сайта example. com, желающего создать файл политики безопасности, который разрешает SWF-файлам, загружаемым из источника example. com, загружать файлы данных с сайта www. example. com и наоборот.

1. Создайте новый текстовый файл с именем crossdomain. xml.

2. Откройте файл crossdomain. xml в текстовом редакторе.

3. Добавьте следующий XML-код в этот файл:




SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>





4. Сохраните файл crossdomain. xml.

5. Выгрузите файл crossdomain. xml в корневую директорию сайта example. com (чтобы этот файл был доступен по адресу http://example. com/crossdomain. xml).

Обращение к переменной экземпляра content класса Loader

Когда отображаемый элемент из внешнего источника загружается с помощью объекта Loader, экземпляр загруженного элемента помещается в переменную content объекта Loader. Как было сказано ранее в подразд. «Обращение к содержимому в виде данных» разд. «Ограничения на загрузку содержимого, обращение к содержимому в виде данных, кросс-скриптинг и загрузку данных», обращение к значению переменной content считается либо операцией обращения к содержимому в виде данных (если объект, содержащийся в переменной content, является изображением), либо операцией кросс-скриптинга (если объект, содержащийся в переменной content, является экземпляром основного класса SWF-файла). Таким образом, в соответствии с ограничениями типов безопасности песочниц, представленными в табл. 19.3-19.5, обращение к загруженному элементу с помощью переменной content без необходимого разрешения приведет к возникновению ошибки безопасности в ситуациях, когда:

? удаленный SWF-файл использует переменную content для обращения к ресурсу, загружаемому из другого удаленного региона;

? локальный SWF-файл с поддержкой сети использует переменную content для обращения к ресурсу, загружаемому из удаленной области действия;

? локальный SWF-файл с поддержкой сети использует переменную content для обращения к локальному SWF-файлу с установленным доверием;

? локальный SWF-файл с поддержкой файловой системы использует переменную content для обращения к локальному SWF-файлу с установленным доверием.

Руководство по actionscript. часть 3, стр. 114

Если вы столкнетесь с любой из описанных ситуаций в своем коде, то должны рассмотреть возможность полностью избежать использования переменной content. Если ваше приложение должно только отображать загруженный элемент на экране, то обращаться к переменной content совершенно не обязательно. Чтобы отобразить загруженный элемент на экране, не обращаясь к переменной content, просто добавьте объект Loader этого элемента — а не значение переменной content — прямо в список отображения. Дополнительную информацию и пример кода можно найти в подразд. «Отображение загруженного элемента на экране» разд. «Использование класса Loader для загрузки отображаемых элементов на этапе выполнения» гл. 28.

Стоит отметить, однако, что в следующих ситуациях использование переменной content обязательно, и, чтобы избежать ситуаций нарушения безопасности, должны быть установлены соответствующие разрешения создателя или распространителя:

? SWF-файлу, загружающему элемент, требуется доступ к данным элемента, например, чтобы прочитать пикселы растрового изображения;

? SWF-файлу, загружающему элемент, необходимо выполнить операцию кросс-скриптинга для загруженного элемента;

? к загруженному элементу необходимо обращаться непосредственно в виде объекта, например, когда объект, представляющий загруженный элемент, должен передаваться в метод, аргументом которого является объект Bitmap.

Дополнительную информацию о классе Loader можно найти в гл. 28, про список отображения вы прочитаете в гл. 20.

К части II!

В первой части вы познакомились с большинством основополагающих концепций языка ActionScript. В части II мы сосредоточимся на конкретной составляющей интерфейса API среды выполнения Flash, называемой API отображения. Впереди нас ожидает множество примеров кода и реальных сценариев программирования, поэтому будьте готовы применить свои знания базового языка ActionScript, заработанные таким тяжелым трудом!

ЧАСТЬ II

Отображение и интерактивность

В этой части представлены методы отображения содержимого на экране и обработки событий ввода. К рассматриваемым темам — относятся API отображения среды выполнения Flash, иерархическая обработка событий, реализация интерактивности с использованием клавиатуры и мыши, анимация, векторная и растровая графика, текст и операции загрузки содержимого.

Прочитав часть И, вы сможете добавлять графическое содержимое и интерактивные возможности в ваши собственные приложения.

? Глава 20 «АР1 отображения и список отображения».

? Глава 21 «События и иерархии отображения».

? Глава 22 «Интерактивность».

Руководство по actionscript. часть 3, стр. 115

? Глава 23 «Обновления экрана».

? Глава 24 «Программная анимация».

? Глава 25 «Рисование с помощью векторов».

? Глава 26 «Программирование растровой графики».

? Глава 27 «Отображение и ввод текста».

? Глава 28 «Загрузка внешних отображаемых элементов».

ПИВА 21

API отображения и список

отображения

Одной из основных задач в программировании на языке ActionScript является отображение объектов на экране. В этой связи платформа Flash предлагает широкий набор инструментов для создания и управления графическим содержимым. Данные инструменты можно разделить на две общие категории.

? API отображения среды выполнения Flash — набор классов для работы с интерактивными графическими объектами, растровыми изображениями и векторным содержимым.

? Готовые компоненты пользовательского интерфейса:

• набор компонентов пользовательского интерфейса платформы разработки Flex — развитый набор настраиваемых компонентов пользовательского интерфейса, построенный на базе API отображения;

• набор компонентов пользовательского интерфейса среды разработки Flash — набор компонентов пользовательского интерфейса, благодаря которым уменьшается размер файла приложения и снижается потребление памяти, однако данные компоненты обладают более ограниченными возможностями по сравнению с набором компонентов пользовательского интерфейса платформы разработки Flex.

Интерфейс API отображения встроен непосредственно во все среды выполнения Flash и, как результат, доступен для всех SWF-файлов. Интерфейс API отображения предназначен для создания максимально настраиваемых пользовательских интерфейсов или визуальных эффектов наподобие тех, которые часто встречаются в мультипликационной графике и играх. В этой главе все внимание сосредоточено на интерфейсе API отображения.



Полезные ссылки
Случайные записи
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 044
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.73
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.105
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 075
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 139
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.106
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.79
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 019
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 025
  • 23.08.2011">ACER Ferrari ONE 200
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.131
  • 05.08.2011">Вентиляция помещения необходима для здоровья и продуктивности работников
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 127
  • 06.07.2011">Хoрoший дизaйн сайта инструмент для достижения прибыли.
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.91
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...