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

Стоит отметить, что во всех трех последующих примерах использования методик, если приложение Main. swf уже содержит класс с именем Module, вместо класса из приложения Module. swf применяется версия данного класса из приложения Main. swf. Чтобы избежать подобного поведения, всегда уточняйте имена ваших классов, используя уникальное имя пакета (как было рассмотрено в гл. 1).

Включение файла класса Module в пути исходных файлов приложения Main. swf

Первая методика для предоставления компилятору доступа к классу Module при компиляции приложения Main. swf заключается во включении файла класса Module в пути исходных файлов приложения Main. swf.

Следующие шаги описывают данный процесс для приложения Flex Builder 2.

1. В палитре Navigator (Навигатор) выберите папку проекта приложения Main. swf.

2. В меню Project (Проект) выберите команду Properties (Свойства).

3. В появившемся окне Properties (Свойства) установите флажок ActionScript Build Path (Путь компиляции ActionScript).

4. На вкладке Source path (Пути исходных файлов) нажмите кнопку Add Folder (Добавить путь).

5. В открывшемся окне Add Folder (Добавление папки) укажите путь к папке, содержащей файл класса Module.

6. В окне Add Folder (Добавление папки) нажмите кнопку ОК.

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

7. В окне Properties (Свойства) нажмите кнопку ОК.

Следующие шаги описывают эквивалентный процесс включения файла класса Module в пути исходных файлов приложения Main, swf для приложения Flash CS3.

1. Откройте соответствующий FLA-файл приложения Main. swf — Main. fla.

Отметим, что шаги, описывающие процесс создания файла Main. Да, не рассматриваются в этом разделе. Предполагается, что файл Main. fla является FLA-файлом, в качестве класса документа которого выбран класс Main.

2. Выберите команду меню File > Publish Settings (Файл > Настройки публикации).

3. На вкладке Flash окна Publish Settings (Настройки публикации) нажмите кнопку Settings (Параметры), расположенную возле раскрывающегося списка ActionScript version (Версия ActionScript) с установленным значением ActionScript 3.0.

4. В появившемся окне ActionScript 3.0 Settings (Параметры ActionScript 3.0) нажмите кнопку со знаком «плюс» и укажите путь к папке, содержащей файл класса Module.

Как только файл класса Module будет включен в пути исходных файлов приложения Main. swf, компилятор сможет проверять типы для любого обращения к классу Module, происходящего в приложении Main. swf. Кроме того, компилятор добавит байт-код для класса Module (и для всех зависимых определений) непосредственно в файл Main. swf, гарантируя доступность MaccaModule из приложения Main. swf на этапе выполнения. Таким образом, методика путей исходных файлов увеличивает общий размер файлов приложения, поскольку класс Module и его зависимые определения включаются в файлы Main. swf и Module. swf. Более того, при использовании методики путей исходных файлов компиляция класса Module осуществляется с нуля всякий раз, когда компилируется приложение Main. swf, что может приводить к временным затратам.

Включение файла класса Module в пути библиотек приложения Main. swf

Вторая методика для предоставления компилятору доступа к классу Module при компиляции приложения Main. swf заключается в создании SWC-файла, содержащего класс Module, и включении этого SWC-файла в пути библиотек приложения Main, swf.

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

Чтобы создать SWC-файл, содержащий класс Module, в приложении Flex Builder 2, мы используем консольный компилятор компонентов сотрс (компилятор сотрс находится во вложенной папке Flex SDK 2\bin внутри папки, в которую было установлено приложение Flex Builder 2). Ниже представлен общий вид команды, используемой для компиляции SWC-файла с помощью компилятора сотрс:

сотрс — source-path путь_к_определениям — output путь_к_БМС_файлу — include-classes именаОпределений

Здесь путь_к_определениям — список местоположений, в которых компилятор должен искать классы и другие определения при создании SWC-файла, путь_к_5МС_фай-лу — путь к создаваемому SWC-файлу, а именаОпределений — список определений, которые будут включены в SWC-файл (компилятор автоматически включает все зависимые определения). Предположим, мы работаем в операционной системе Windows ХР и хотим создать SWC-файл с именем module. swc в папке с: \ apps\module\bin\.Mbi хотим, чтобы файл modu 1 е. swс включал класс Module, файл которого находится в папке с: \apps\module\src. Чтобы создать файл module. swc, мы используем следующую команду:

compc — source-path c:\apps\module\src — output c:\apps\module\bin\module. swc

included asses

Module

Стоит отметить, что, несмотря на свое название, параметр — include-classes компилятора сотрс может использоваться для включения любых типов определений, а не только классов. Возможно, в будущих версиях компилятора появится параметр с более подходящим названием —include-definitions.

Теперь рассмотрим эквивалентный процесс создания SWC-файла, содержащего класс Module, в приложении Flash CS3.

1. Создайте новый документ Flash (FLA-файл) с именем Module. Да.

2. В поле Document class (Класс документа) палитры Properties (Свойства) введите значение Module.

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

3. Выберите команду меню File > Publish Settings (Файл > Настройки публикации).

4. На вкладке Formats (Форматы) в области Туре (Тип) снимите флажок HTML.

5. На вкладке Flash в области Options (Параметры) установите флажок Export SWC (Экспорт SWC).

6. Нажмите кнопку Publish (Опубликовать), а затем кнопку ОК.

Создав файл module. swc, мы включаем его в пути библиотек при компиляции приложения Main. swf. Для этого в приложении Flex Builder 2 нужно выполнить следующие шаги.

1. На палитре Navigator (Навигатор) выберите директорию проекта приложения Main. swf.

2. В меню Project (Проект) выберите команду Properties (Свойства).

3. В появившемся окне Properties (Свойства) установите флажок ActionScript Build Path (Путь компиляции ActionScript).

4. На вкладке Library path (Пути библиотек) нажмите кнопку Add SWC (Добавить SWC).

5. В окне Add SWC (Добавление SWC) укажите путь к файлу module. swc.

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

6. В окне Add SWC (Добавление SWC) нажмите кнопку ОК.

7. Теперь в окне Properties (Свойства) нажмите кнопку ОК.

Чтобы включить файл module. swc в пути библиотек при компиляции приложения Main. swf в приложении Flash CS3, выполните следующие шаги.

1. Во вложенной папке Configuration\Components внутри папки, в которую была установлена среда разработки Flash, создайте новую папку с именем Module. В Windows ХР по умолчанию используется следующий путь к вложенной папке Configuration\Components:С:\Program Files\Adobe\Adobe Flash CS3\en\ Configuration\Components. В операционной системе Mac OS X по умолчанию используется такой путь к вложенной папке Configuration\Components: Macintosh HD: Applications-.Adobe Flash CS3 : Configuration : Components.

2. Скопируйте файл module. swc в папку Module, созданную на шаге 1. В результате копирования файла module. swc во вложенную папку Configuration\Components

этот файл будет добавлен на палитру Components (Компоненты) среды разработ-

3. В среде разработки Flash откройте палитру Components (Компоненты) (команда меню Window > Components (Окно > Компоненты)).

4. Откройте меню Options (Параметры), щелкнув на значке в правом верхнем углу палитры Components (Компоненты), и выберите команду Reload (Обновить). Папка Module появится на палитре Components (Компоненты).

5. На палитре Components (Компоненты) откройте папку Module.

6. Откройте палитру Library (Библиотека) файла Main. fla (команда меню Window > Library (Окно > Библиотека)).

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

7. Перетащите компонент Module с палитры Components (Компоненты) на палитру Library (Библиотека) файла Main. fla.

Как только файл module. swc будет включен в пути библиотек приложения Main. swf, компилятор сможет проверять типы для любого обращения к классу Module, происходящего в приложении Main. swf. Кроме того, компилятор копирует байт-код класса Module (и всех зависимых классов) непосредственно из файла module. swc в приложение Ma in. swf, гарантируя доступность класса Module из приложения Main. swf на этапе выполнения. Таким образом, как и в случае с методикой путей исходных файлов, методика путей библиотек увеличивает общий размер файлов приложения, поскольку класс Module и его зависимые определения включаются и в Main. swf, и в Module. swf. Тем не менее, поскольку при использовании методики путей библиотек класс Module не компилируется с нуля всякий раз, когда компилируется приложение Main. swf, компиляция приложения Main. swf с использованием методики путей библиотек обычно быстрее, чем с использованием методики путей исходных файлов.

Безусловно, всякий раз, когда изменяется класс Module, сам файл module. swc необходимо создавать заново. Следовательно, если класс Module изменяется гораздо чаще, чем приложение Main. swf, время, сэкономленное при копировании байт-кода непосредственно из файла module. swc в файл Main. swf, будет полностью потрачено на компиляцию файла module. swc. Выражаясь современным языком, ваши результаты могут отличаться.

Третья методика для предоставления компилятору доступа к классу Module при компиляции приложения Main. swf заключается в создании SWC-файла, содержащего класс Module, и включении этого SWC-файла в пути внешних библиотек приложения Main. swf.

Применение этой методики начинается с выполнения инструкций из предыдущего раздела по созданию файла module. swc. Создав этот файл, мы включаем его

ки Flash.

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

Включение файла класса Module

в пути внешних библиотек приложения Main. swf

в пути внешних библиотек приложения Main. swf. Для этого в приложении Flex Builder 2 необходимо выполнить следующие шаги.

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

1. На палитре Navigator (Навигатор) выберите директорию проекта приложения Main. swf.

2. В меню Project (Проект) выберите команду Properties (Свойства).

3. В появившемся окне Properties (Свойства) установите флажок ActionScript Build Path (Путь компиляции ActionScript).

4. На вкладке Library path (Пути библиотек) нажмите кнопку Add SWC (Добавить SWC).

5. В окне Add SWC (Добавление SWC) укажите путь к файлу module. swc.

6. В окне Add SWC (Добавление SWC) нажмите кнопку ОК.

7. В дереве списка Build path libraries (Пути библиотек компиляции) раскройте файл module. swc.

8. Среди раскрывшихся свойств файла module. swc выделите свойство Link Туре (Тип связи) с установленным значением Merged into code (Внедрить в код).

9. Нажмите кнопку Edit (Изменить).

10. В появившемся диалоговом окне Library Path Item Options (Параметры элемента путей библиотек) для параметра Link Туре (Тип связи) выберите значение External (Внешний).

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

И. В окне Library Path Item Options (Параметры элемента путей библиотек) нажмите кнопку ОК. 12. В окне Properties (Свойства) нажмите кнопку ОК.

В приложении Flash CS3, чтобы включить файл module. swc в пути внешних библиотек, мы просто помещаем его в ту же папку, где находится файл Main. fla (или в любую другую папку из путей к классам файла Main. fla), и удаляем компонент Module с палитры Library (Библиотека) файла Main. fla.

Как только файл module. swc будет включен в пути внешних библиотек приложения Main, swf, компилятор сможет проверять типы для любого обращения к классу Module, происходящего в приложении Main. swf. Однако, в отличие от методик путей библиотек и путей исходных файлов, когда приложение Ma in. swf компилируется с использованием методики путей внешних библиотек, компилятор не копирует байт-код класса Module в приложение Main. swf. Таким образом, общий размер файлов приложения будет минимальным. Тем не менее исключение байт-кода класса Module из приложения Main. swf приводит к новой проблеме: на этапе выполнения любая ссылка на класс Module из приложения Main. swf оказывается неизвестной для среды выполнения Flash. В связи с этим следующий код:

Moduledoader. content).startC )

вызовет такую ошибку на этапе выполнения:

ReferenceError: Error #1065: Variable Module is not defined.

На русском языке она будет выглядеть так: Ошибка обращения: переменная Module не определена.

Чтобы избежать данной ошибки, мы должны заставить среду выполнения Flash импортировать классы приложения Module, swf в домен приложения файла Main. swf на этапе выполнения.

Домен приложения SWF-файла предоставляет доступ к классам этого файла. Домены приложения определяют, как загруженные SWF-файлы совместно используют классы и другие определения. Дополнительную информацию можно найти в разделе Programming ActionScript 3.0 > Flash Player APIs > Client System Environment > ApplicationDomain class документации корпорации Adobe. Кроме того, обратитесь к гл. 31.

Чтобы импортировать классы приложения Module. s wf в домен приложения файла Main. swf, при создании запроса на загрузку приложения Module. swf мы используем объект LoaderContext. Рассмотрим, как выглядит код, добавляемый в основной класс приложения Main. swf:

// Сначала импортируем классы ApplicationDomain и LoaderContext… import flash. system.*;

// …затем в классе используем объект LoaderContext, чтобы импортировать // классы и другие определения файла Module. swf в домен приложения // файла Main. swf

1oader.1oad(new URLRequest(«Module. swf»).

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

New LoaderContext(false, ApplicationDomain. currentDomain));

В результате выполнения предыдущего кода классы (и другие определения) файла Module. swf становятся непосредственно доступными для кода приложения Main. swf — будто они были определены в приложении Main. swf.

Стоит отметить, что, если файлы Main, swf и Module, swf находятся в разных удаленных регионах или если файл Main, swf находится в локальной области действия и его тип безопасности песочницы отличается от типа безопасности песочницы файла Module. swf, попытка импортировать классы файла Module. swf в домен приложения файла Main, swf завершится неудачно без сообщения об ошибке. В данном случае следующий код:

Moduledoader. content).start( )

вызовет ту же ошибку, которая возникла бы в случае, когда классы приложения Module. swf вообще не импортируются в домен приложения файла Main. swf:

ReferenceError: Error #1065: Variable Module is not defined.

По-русски ошибка выглядит так: Ошибка обращения: переменная Module не определена.

В определенных ситуациях избежать подобного ограничения безопасности можно с помощью импортирующей загрузки, при которой приложение Ma in. s wf использует объект LoaderContext, чтобы импортировать файл Module. swf в свой домен безопасности. Это демонстрирует следующий код:

var loaderContext:LoaderContext = new LoaderContext( ):

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

var loader:Loader = new Loader( );

loader. load(new URLRequest(«Module. swf»), loaderContext):

Полную информацию по импортирующей загрузке можно получить в разд. «Импортирующая загрузка» гл. 19.

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

Для обзора и для справки в листинге 28.9 представлен код для классов Main и Module, рассмотренных в данном разделе. Предполагается, что файл module. swc был создан и включен в пути внешних библиотек приложения Module. swf.

Листинг 28.9. Классы Main и Module

// Класс Main

package { import flash. display.*; import flash. net.*; import flash. events.*; import flash. system.*;

public class Main extends Sprite { private var loader:Loader;

public function Main( ) { loader = new Loader( );

1 oader. contentLoaderInfо. addEventLi stener(Event. INIT.

initListener);

1oader.1oad(new URLRequest(«Module. swf»), new LoaderContext(false,

Appli cati onDomai n. currentDomai n));

}

private function initListener (e:Event):void { traceC’init»);

Module(e. target. content).start( );

}

}

}

// Класс Module

package { import flash. display. Sprite;

public class Module extends Sprite { public function Module( ) { }

public function start ( ):void { trace(«Module. start( ) was invoked…»);

}

}

}

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



Полезные ссылки
Случайные записи
  • 24.01.2010">Плагины расширений для браузера Google Chrome
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 012
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.116
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.169
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 040
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.108
  • 18.10.2019">Игровой автомат Always Hot в Azino
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.70
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.103
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 005
  • 11.08.2010">Популярное расположение контактной информации
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 026
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 045
  • 19.04.2012">Марк Цукерберг договорился о покупке Instagram за $1 млрд вместо $2 млрд
  • 24.02.2011">Руководство по actionscript. часть 6, стр. 110
Опрос

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

View Results

Loading ... Loading ...