Февраль 2011

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

При использовании метода getDefinition ( ) перед попыткой обращения к символам или классам SWF-файла мы должны убедиться, что его экземпляр был проинициализирован. Для этого мы регистрируем приемник в объекте Loaderlnfo объекта встроенного элемента для событий Event. INIT. В зависимости от того, как происходит встраивание SWF-файла, мы обращаемся к объекту Loaderlnfo различными способами. Если SWF-файл был встроен непосредственно на уровне переменной, то мы используем следующий код, чтобы зарегистрировать приемник для событий Event. INIT:

// Создаем экземпляр элемента

var экземплярВстроенногоЭлемента:MovieClipLoaderAsset = new ИмяКласса( );

// Регистрируем приемник для события Event. INIT

Loader (экземплярВстроенногоЭлемента. getChi]6/\t(0)) .contentLoaderlnfo.

addEventListener(

Event. INIT,

приемникСобытия1И1Т);

В приведенном коде ИмяКласса — переменная, которая ссылается на класс, представляющий встроенный SWF-файл, экземплярВстроенногоЭлемента — экземпляр класса

ИмяКласса, а приемникСобытия1И1Т — ссылка на функцию, которая будет выполняться при инициализации экземпляра.

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

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

// Создаем экземпляр элемента

var BnHapHbie/IaHHbie:Bytel\rrayl\sset = new БинарныеДанные( );

// Генерируем отображаемый объект, представляющий SWF-файл var loader:Loader = new Loader( ); loader. loadBytes{БинарныеДанные); addChilddoader);

// Регистрируем приемник для события Event. INIT

1oader. contentLoaderlnfo. addEventLi stener(Event. INIT.

приемникСобытияНУП);

Здесь БинарныеДанные — переменная, которая ссылается на класс, представляющий бинарные данные встроенного SWF-файла, БинарныеДанные — экземпляр класса БинарныеДанные, а приемникСобытияНУП, как и раньше, — ссылка на функцию, которая будет выполняться при инициализации экземпляра данного SWF-файла.

Следующий код демонстрирует пример приемника события Event. INIT, который получает ссылку на класс символа клипа с именем Ball. Этот код также создает экземпляр символа Ball и добавляет его в иерархию отображения класса метода initListener ( ).

private function initListener (e:Event):void { // Получаем ссылку на символ Ball из встроенного SWF-файла var Ball Symbol:Class =

e. target. content.1oaderInfо. appli cati onDomai n. getDefi ni ti on(«Bal 1″);

// Создаем новый экземпляр символа Ball

var ball:MovieClip = MovieClip(new BallSymboK ));

// Помещаем экземпляр символа Ball на экран addChild(ball);

}

Пример использования тега [Embed]

Для справки в листинге 28.15 показан класс, который демонстрирует сценарии использования тега [ Embed ] на уровне переменной, рассмотренные в предыдущих разделах.

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

Листинг 28.15. Класс, демонстрирующий встраивание элементов на уровне переменной

package { import flash. display.*; import flash. events.*; import mx. core. MovieClipAsset; import mx. core. MovieCli pLoaderAsset;

import mx. core. SpriteAsset; import mx. core. BitmapAsset; import mx. core. ByteArrayAsset;

public class VariableLevelEmbedDemo extends Sprite { [Embed(sou rce="photo. jpg")] private var Photo:Class;

[Embed(s ou rc e="1i ne. s vg")] private var SVGLine:Class;

[Embed(source="fp9app. swf")] private var FP9App:Class;

[Embed(source="fp8app. swf", symbol="Ball")] private var FP8Ball-.Class;

[Embed(source="fp9app. swf", mi meType="appli cati on/octet-stream")] private var FP9BinaryData:Class;

public function VariableLevelEmbedDemo ( ) { // Растровое изображение, встраиваемое // на уровне переменной var photo:BitmapAsset = new Photo( ); addChild(photo);

// Файл в формате SVG, встраиваемый на уровне переменной var line:SpriteAsset = new SVGLine( ); addChild(line);

// Символ SWF-файла в формате приложения Flash Player 8, встраиваемый

// на уровне переменной

var fp8ball:MovieClipAsset = new FP8Ball( );

addChild(fp8ball);

// SWF-файл в формате приложения Flash Player 9. встраиваемый // на уровне переменной

var fp9app:MovieClipLoaderAsset = new FP9App( ); addChild(fp9app);

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

Loader(fр9арр. getChi1dAt(0)).contentLoaderlnfo. addEventLi stener(

Event. INIT. fp9appInitListener);

// Бинарные данные (SWF-файл в формате приложения Flash Player 9),

// встраиваемые на уровне переменной

var fp9biпаrydata:ByteArrayAsset = new FP9BinaryData( );

var loader:Loader = new Loader( );

1oader.1oadBytes(fp9bi na rydata); addChilddoader);

// Чтобы обратиться к классу символа или к обычному классу // во встроенном SWF-файле, необходимо дождаться завершения // инициализации данного SWF-файла 1oader. contentLoaderlnfo. addEventLi stener(Event. INIT,

fp9binarydataInitListener);

}

private function fp9appInitListener (e:Event):void { // Получаем ссылку на символ Ball из встроенного SWF-файла var Ball Symbol:Class =

e. ta rget. content.1oaderInfо. appli cati onDomai n. getDefi ni ti on(«Bal 1″); // Создаем новый экземпляр символа Ball var ball:MovieClip = MovieClip(new Ball Symbol( )); // Устанавливаем положение экземпляра символа Ball и помещаем его // на экран ball. х = 220; ball. у = 240; addChild(ball);

}

private function fp9binarydataInitListener (e:Event):void { // Получаем ссылку на символ Ball из встроенного SWF-файла var BallSymbol:CIass =

e. target. content.1oaderInfо. appli cati onDomai n. getDefi ni tion(«Bal 1″); // Создаем новый экземпляр символа Ball var ball.-MovieClip = MovieClip(new BallSymboK )); // Устанавливаем положение экземпляра символа Ball и помещаем его // на экран ball. у = 200; addChild(ball);

}

}

}

Очищайте проект, чтобы увидеть изменения

Мы рассмотрели несколько способов, позволяющих встроить внешний отображаемый элемент в приложение. Обычно, когда файл встраиваемого элемента изменяется, эти изменения автоматически отражаются при следующей компиляции связанного приложения. Однако в приложении Flex Builder 2 при повторной компиляции приложения изменения в элементах иногда могут не отражаться. Чтобы гарантировать, что все изменения в элементе будут отражены на этапе компиляции, очистите проект приложения, как описано ниже.

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

1. Выберите команду меню Project > Clean (Проект > Очистить).

2. В окне Clean (Очистка) выберите проект, который вы желаете очистить.

К части III

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

ЧАСТЬ III

Практическое применение

ActionScript

В части III основное внимание уделяется вопросам применения кода, написанного на языке ActionScript. В этой части освещаются такие темы, как объединение кода на ActionScript с элементами, созданными вручную в среде разработки Flash, использование платформы разработки Flex в приложении Flex Builder 2 и создание библиотеки пользовательского кода.

Завершив изучение части III, вы приобретете практические навыки, необходимые для разработки приложений на языке ActionScript с помощью среды разработки Flash и приложения Flex Builder 2. Кроме того, вы узнаете о способах распространения кода между другими разработчиками или по всему миру.

? Глава 29 «Язык ActionScript и среда разработки Flash».

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

? Глава 30 «Минимальное приложение на языке MXML».

? Глава 31 «Распространение библиотеки классов».

ГЛАВА 29

Язык ActionScript и среда разработки Flash

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

** \

^ ] Чтобы помочь программистам, приходящим из других языков и сред, некоторые кон-м?; л ц цепции, представленные в этой главе, рассматриваются с точки зрения новичка в среде разработки Flash. Таким образом, часть представленного материала будет являться своего рода обзором для опытных пользователей среды разработки Flash.

Файлы примеров, рассматриваемых в этой главе, вы можете загрузить по адресу http://www. moock. org/eas3/examples.

Документ Flash

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

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

Чтобы создать SWF-файл в среде разработки Flash, мы должны сначала сформировать документ Flash, или FLA-файл. Он описывает размещение тела мультимедийного содержимого во времени. Чтобы создать FLA-файл, пригодный для использования с кодом на языке ActionScript 3.0, выполните следующие шаги.

1. В среде разработки Flash выберите команду меню File > New (Файл > Создать).

2. На вкладке General (Общие) окна New Document (Новый документ) в списке Туре (Тип) выберите значение Flash File (ActionScript 3.0) (Файл Flash (Action-Script 3.0)).

3. Нажмите кнопку ОК.

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

Чтобы экспортировать SWF-файл для отладки в среде разработки Flash, мы используем команду меню Control > Test Movie (Управление > Проверка фильма). Чтобы

экспортировать SWF-файл для последующего распространения в Интернете, мы используем команду меню File > Publish (Файл > Опубликовать). SWF-файл, экспортированный из среды разработки Flash, может также распространяться в виде настольного приложения; дополнительную информацию можно найти в документации по приложению Adobe AIR.

Временные шкалы и кадры

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

При экспортировании SWF-файла из FLA-файла компилятор Flash конвертирует временные шкалы FLA-файла в файловый формат Flash (SWF), подходящий для воспроизведения в клиентской среде выполнения Flash. При воспроизведении SWF-файла кадры из временных шкал FLA-файла отображаются на экране, быстро сменяя друг друга, создавая тем самым эффект анимации. Скорость, с которой в среде выполнения Flash происходит смена кадров, обусловлена скоростью кадров, измеряемой в кадрах в секунду (дополнительную информацию по скорости кадров можно найти в гл. 23).

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

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

Первая временная шкала, создаваемая в новом FLA-файле, называется основной временной шкалой. Она формирует фундамент для всего содержимого, добавляемого в FLA-файл.

Для создания каждого кадра содержимого на временной шкале мы можем либо импортировать внешние элементы, либо создавать новую графику с помощью встроенных инструментов рисования среды разработки Flash (например, Pencil (Карандаш), Brush (Кисть) и Text (Текст)). Графика каждого кадра помещается в визуальное рабочее пространство, называемое сценой (Stage).

*• itljjp Не путайте сцену среды разработки Flash с классом Stage языка ActionScript: сцена среды ‘——’ разработки Flash является рабочим пространством для создания содержимого, а класс Stage языка ActionScript представляет корневой элемент в списке отображения среды выполнения Flash.

На рис. 29.1 изображен простой FLA-файл hello. fla, открытый в среде разработки Flash. В верхней половине рисунка показана основная временная шкала FLA-файла, которая в данном случае содержит два кадра. В нижней части рисунка показана

сцена, которая отображает содержимое выбранного кадра. В данном случае выбранный кадр является первым кадром основной временной шкалы, обозначаемым тонкой вертикальной /нишей, проходящей через кадр на временной шкале. Эта тонкая линия обозначает выбранный кадр и называется головкой воспроизведения.

Flash cs3 Professional — (Mlo. fta)

Ht Edit View Insert Modify Text Commands Control Debug Window Help

Щ

p

A, T

\

4. S

/

S

1П1

5 10 15 20 25 30 35 40 45 -= #

» i «вдн A At

helo. fla I

Головка воспроизведения

& X

Первый кадр Второй кадр Основная временная шкала

{tij Scene 1

Сцена (область рисования) ,

? * 10 1 /l2.0 fps 0.0s i / 1 Workspace Ў fjj^ 4йч ‘ 100%

1*1

Рис. 29.1. Файл hello. fla, показан кадр 1 основной временной шкалы

На рис. 29.2 снова изображен файл hello. fla, но на этот раз на основной временной шкале выбран кадр 2. Обратите внимание, что положение головки воспроизведения, обозначающей выбранный кадр, сместилось вправо. Соответственно, на сцене сейчас отображается содержимое кадра 2.

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

Ключевые и обычные кадры. В среде разработки Flash определены два типа кадров: ключевые и обычные. Хотя рассмотрение анимации Flash выходит за рамки данной книги, понимание различий между ключевыми и обычными кадрами является неотъемлемым условием для разработки сценариев, рассматриваемых в следующем разделе.

ТИОЕГ

insert Modify Text Commands Control Debug Window Help

Головка воспроизведения

ax

10 15 20 25 30 35 40 45

щ

1]

T

\ ?

ъ

Я

—;—

Второй кадр Основная временная шкала \ Сцена (область рисования) !-

Рис. 29.2. Файл hello. fla, показан кадр 2 основной временной шкалы

Ключевой кадр — это кадр, у которого находящееся на сцене содержимое отличается от содержимого предыдущего кадра. Чтобы добавить новый ключевой кадр на временную шкалу, мы используем команду меню Insert > Timeline > Keyframe (Вставка > Временная шкала > Ключевой кадр).

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

В отличие от этого, обычный кадр — это кадр, у которого находящееся на сцене содержимое автоматически образуется (повторяется) из содержимого предыдущего ближайшего ключевого кадра. Чтобы добавить новый обычный кадр на временную шкалу, мы используем команду меню Insert > Timeline > Frame (Вставка > Временная шкала > Кадр).

Добавляя обычные кадры на временную шкалу, мы увеличиваем время, в течение которого изображение на экране остается неизменным. Добавляя ключевые кадры на временную шкалу, мы можем изменить содержимое, отображаемое на экране (обычно для создания эффекта анимации).

Предположим, что мы создаем анимацию, в которой человечек бежит к дому, на мгновение останавливается перед дверью, а затем убегает прочь. Когда человечек бежит к дому, каждый кадр анимации имеет различное содержимое, поэтому все соответствующие кадры должны быть ключевыми. Когда человечек находится перед дверью, каждый кадр анимации имеет одинаковое содержимое (поскольку человечек не двигается), поэтому все соответствующие кадры могут быть обычными. Когда человечек убегает прочь от дома, каждый кадр анимации снова имеет различное содержимое, поэтому все соответствующие кадры должны быть ключевыми.

На рис. 29.3 показаны кадры нашей анимации с бегущим человечком, которую пришлось сильно сократить, чтобы уместить в данной книге. Кадры 1,2,3,8 и 9 являются ключевыми, каждый из которых имеет свое собственное содержимое. Кадры 4-7 являются обычными, содержимое которых переносится из кадра 3. На рисунке содержимое кадров 4-7 изображено серым цветом — это значит, что оно переносится из кадра 3. На рисунке ключевые кадры отмечены буквой К, а обычные кадры — буквой R.

1 23456789

KKKRRRRKK Рис. 29.3. Ключевые кадры в сравнении с обычными

В среде разработки Flash временная шкала для нашей анимации с выбранным кадром 1 выглядела бы так, как показано на рис. 29.4. Обратите внимание, что

[FunnTngiiiiin. fleJ

НЕн’х

gfe gdt View [nsert Mpdiry Iext Commands Central Qebug Window

а*

T

\ о

Рис. 29.4. Временная шкала для анимации с бегущим человечком

ключевые кадры с содержимым обозначаются значком заполненного круга. Ключевые кадры без содержимого, называемые пустыми ключевыми кадрами, обозначаются пустым кругом (наша анимация не имеет пустых ключевых кадров). Для обозначения обычных кадров значок круга не используется вообще. Последний обычный кадр, предшествующий ключевому кадру, обозначается значком прямоугольника.

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

Чтобы упростить изучение материала в последующих разделах, мы будем полагать, что наша анимация с бегущим человечком сохраняется в файле с именем runningman. fla.

Теперь рассмотрим процесс создания сценариев на временной шкале.

Создание сценариев на временной шкале

Чтобы выполнить код в определенной точке на временной шкале, мы используем сценарий кадра. Он представляет собой блок кода на языке ActionScript, добавленный к ключевому кадру на временной шкале FLA-файла.

Чтобы добавить сценарий к ключевому кадру на временной шкале, используйте следующую основную последовательность действий.

1. Щелкните кнопкой мыши на нужном ключевом кадре на временной шкале (выберите его).

2. Выберите команду меню Window > Actions (Окно > Действия), чтобы открыть панель Actions (Действия).

3. Введите желаемый код на палитре Actions (Действия).

Любой код, введенный на палитре Actions (Действия) при выбранном ключевом кадре, становится частью сценария этого кадра и будет выполняться непосредственно перед его отображением в среде выполнения Flash.

Сценарии обычно используются для управления содержимым кадра, в котором они находятся. Мы узнаем подробнее об управлении содержимым с помощью сценариев кадров далее, в разд. «Обращение к созданным вручную экземплярам символов» этой главы.



Полезные ссылки
Случайные записи
  • 22.07.2011">Интернет – кладезь для меломанов
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.25
  • 03.02.2010">Создание графиков и диаграмм на JavaScript
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 125
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 019
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 133
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.148
  • 02.08.2010">Стили веб-дизайна
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.25
  • 01.10.2010">Что такое экшен и как с ним работать?
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.36
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.37
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 012
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.45
  • 18.07.2010">Лучшие модули для сайта
Опрос

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

View Results

Loading ... Loading ...