Рисование на ActionScript во Flash MX


Оглавление (нажмите, чтобы открыть):

Обучающие занятия на примерах
по созданию учебных проектов в среде Macromedia Flash MX

И.А. Бутенина,
школа № 510, Москва

Занятие 3. Использование языка сценариев Action Script

На этом занятии мы познакомимся с использованием языка Action Script для управления командами меню, которое мы создали на предыдущем занятии.

План занятия

3.1. Панель Actions.

3.2. Написание сценариев к командам меню (кнопкам) для загрузки сцен и остановки фильма.

Теоретическая часть

3.1. Панель Actions

В среду Macromedia Flash встроен объектно-ориентированный язык ActionScript, посредством которого можно управлять всеми объектами фильма и придавать им необходимую интерактивность.

Программы (применительно к Macromedia Flash их часто называют сценариями) записываются в панели Actions, которая позволяет не только редактировать сценарии, но и упорядочивать их, а также осуществлять поиск и замену операторов, функций и т.д. Кроме этого, имеется возможность печати сценария. Панель Actions (Действия) можно вызвать с помощью команды меню Windows—Development Panels—Actions или нажатием функциональной клавиши . Элементы панели Actions (Действия) представлены на рис. 1.

Поясним назначение кнопок панели Actions:

· Add Statement (Добавить инструкцию) — возможность добавить инструкцию в сценарий Action Script;

· Find (Найти) — найти в сценарии название оператора, функцию, имя клипа и т.д.;

· Replace (Заменить) — заменить в сценарии поисковый контекст на другой;

· Insert Target Path (Указать путь к объекту) — отобразить структуру клипов в фильме для выбора нужного;

· Check Syntax (Проверка синтаксиса) — проверить сценарий на наличие синтаксических ошибок;

· Auto Format (Автоматическое форматирование) — автоматическое форматирование (структурирование) кода сценария;

· Show Hint (Показать подсказку) — показать подсказку для кода. Например, на рис. 2 показаны все возможные варианты для обработчика событий on;

· Launch Reference (Запустить справку Action Script);

· View Options (Параметры отображения) скрыть/показать линейку с нумерацией строк сценария;

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

Вкладки области отображения сценариев позволяют запоминать зафиксированные сценарии.

Область элементов Action Script содержит список операторов, классов, функций и других конструкций языка, собранных в папки. Если пользователь не знает, где искать ту или иную конструкцию языка, можно воспользоваться кнопкой Index для получения алфавитного списка конструкций языка.

Практическая часть

3.2. Написание сценариев к командам меню (кнопкам) для загрузки сцен и остановки фильма

3.2.1. Загрузим фильм, созданный на предыдущем занятии, и переключимся в Сцену 1.

Щелкнем мышью по первому ключевому кадру слоя меню и напишем скрипт для остановки фильма. Он состоит всего из одного оператора stop(). Обратите внимание на то, что название панели Actions после выделения ключевого кадра сменилось на Actions—Frame (что указывает на то, что данный скрипт относится именно к кадру). Обратите также внимание на то, что кадр, содержащий скрипт, помечается буквой a. Все это видно на рис. 3.

Напомним, что если вы не видите панель Actions на экране, ее можно вызвать с помощью меню (см. рис. 4).

3.2.2. Теперь перейдем к событиям кнопок. События, как правило, являются реакциями на те или иные действия пользователя. Обработчик событий для кнопки имеет вид:

Выше мы уже видели примеры всевозможных событий (см. рис. 2).

Выделим нашу главную кнопку (на временной линейке головка воспроизведения кадров должна показывать на 1-й кадр) и напишем для нее скрипт, показанный на рис. 5. Заметим, что название панели изменилось на Action—Button, поскольку теперь скрипт относится к кнопке. Событие press соответствует нажатию на кнопку. При нажатии на кнопку нам необходимо перейти ко второму кадру для открытия меню. Затем следует остановить фильм.

3.2.3. Далее запишем отдельно скрипты для каждой кнопки (головка воспроизведения на временной шкале указывает на 2-й кадр). Выделяем кнопку “Рафаэль Санти”. Нажатие на кнопку должно вызывать переход к соответствующей сцене.

Событие release соответствует отпусканию левой кнопки мыши (после ее нажатия) при положении курсора мыши на кнопке. Команда gotoAndPlay(«Scene 2»,1) означает: перейти на Сцену 2 и проиграть ее, начиная с 1-го кадра.

3.2.4. Для кнопки “Моне (галерея)” запишем аналогичный скрипт, только переходить будем на Сцену 3.

Иллюстрированный самоучитель по Web-графике

Рисование во FLASH

Главное окно Flash MX несколько отличается от главного окна Flash 5.0, но построено на тех же основных принципах. Мы небудем подробно рассматривать все его особенности. Остановимся лишь на основных моментах. В Flash MX сокращено количество палитр. В меню Window (Окно) нет подменю Panels (Панели), в котором можно выбрать панель (палитру), чтобы открыть или закрыть ее. Палитры в Flash MX открываются и закрываются непосредственно с помощью меню Window. Обратим внимание, что все свойства текущего (т. е. выделенного) элемента на рабочем поле отображаются на одной палитре Properties (Свойства), которая по умолчанию расположена внизу. Ее еще называют инспектором свойств (properties inspector). Содержание этой палитры зависит от текущего объекта (т. е. выделенного в данный момент). Иначе говоря, содержание палитры свойств контекстно зависимо. Это очень удобно. А в Flash 5.0 свойства объекта рассредоточены по нескольким палитрам или по нескольким вкладкам одной палитры. По умолчанию в Flash MX открывается палитра действий (Actions), предназначенная для работы со сценариями на языке Action Script. Сценарии используются при создании анимаций (мультфильмов). Поэтому в случае работы над обычной графикой эту палитру можно закрыть, чтобы освободить место.

В левой части главного окна Flash находится панель инструментов Tools. Именно она содержит инструменты, используемые при рисовании и редактировании изображений. Упомянутые выше палитры предназначены для настройки параметров инструментов. Итак, есть инструменты и есть палитры настройки параметров. Следует также помнить, что щелчок правой кнопкой мыши на нарисованном объекте раскрывает контекстное меню, в котором можно выбрать команды (пункты, опции), относящиеся к этому объекту.

Рис. 431. Главное окно Flash MX

Рис. 432. Панель инструментов Flash 5.0 с указанными основными инструментами рисования

На панели инструментов, в числе прочих, находятся три наиболее важных и часто используемых инструмента:

  • Arrow («Стрелка»)
  • Subselect («Субвыделение»)
  • Lasso («Лассо»)

Инструмент Arrow используется наиболее часто. Главное его назначение – выделение графических объектов. Объект в общем случае является совокупностью двух подобъектов – контура и заливки (внутренней области). Контур представляет собой линию (штрих), имеющую цвет, толщину и стиль (сплошная линия, пунктир и т. п.). Заливка – это область, очерченная контуром. Она также может иметь цвет. Графический объект (фигура) не обязательно должен содержать одновременно и контур, и заливку. Бывает, мы сначала рисуем контур, закрашиваем внутреннюю область каким-нибудь цветом, а затем удаляем окаймление, оставляя одну заливку. Однако условием существования объекта является наличие хотя бы чего-то одного – контура или заливки.


Рисование на ActionScript во Flash MX

Название: ActionScript для Flash MX. Подробное руководство
Автор: Мук К.
Издательство: СПб: Символ-Плюс
Год: 2004
Формат: djvu
Страниц: 1120
Размер: 10,6 Mb
Язык: Русский

Второе издание бестселлера «ActionScript для Flash MX. Подробное руководство» — исчерпывающий и незаменимый ресурс по ActionScript, настольная книга дизайнеров и Flash-программистов, пишущих серьезные приложения. Из-под пера Мука вышел полностью переработанный справочник, не только подробно описывающий бесчисленные нововведения Flash MX, но и раскрывающий в ясной и доступной манере глубинные изменения, произошедшие на методологическом уровне (особенно касающиеся компонентов и событий).
Издание уникально — это самая точная и хорошо организованная книга по программированию во Flash MX. Объем справочника увеличился почти вдвое и включает описание более 250 новых классов, объектов, методов и свойств. Мук добавил в книгу сотни новых примеров кода, иллюстрирующих практическое применение новых технологий Flash MX: отрисовку фигур на этапе исполнения, преобразование массивов в экранные таблицы, создание компонентов многократного использования, работу с XML и звуком. Помимо стандартных методик описываются лучшие приемы программирования и скрытые возможности, особое внимание уделяется объектно-ориентированному программированию и новой модели событий Flash MX. Книгу оценят как новички, так и специалисты.

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

——-
| bookZ.ru collection
|——-
| Гэри Розенцвейг
|
| Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
——-

Гэри Розенцвейг (Gary Rosenzweig) – дизайнер компьютерных игр, программист, предприниматель и автор восьми книг по Macromedia Director и Flash. Он владелец и управляюший компании CleverMedia, которая специализируется на разработке компьютерных игр и имеет четыре специализированных сайта в Internet: https://clevermedia.com, https://gamescene.com, https://gamespark.com и https://flasharcade.com.
Со времени своего основания в 1996 году компания выпустила более 200 игр. Игры находятся в свободном доступе на указанных сайтах, вместе составляюших «Сеть CleverMedia». Лицензией на многие из данных игр обладают и другие сайты.
Свой первый шаг в мультимедийном бизнесе Гэри сделал, получив степень бакалавра в области вычислительной техники в Дрексельском университете (Drexel University), штат Филадельфия. Интерес к издательскому делу привел его в университет Северной Каролины в городе Чейпл Хил, который он закончил со степенью магистра в области журналистики и средств массовой информации.
В 1995 году Розенцвейг написал свою первую книгу по Macromedia Director Lingo, бесплатную версию которой можно найти в Internet. В 1996 году издательство Ventana опубликовало его книгу «The Comprehensive Guide to Lingo» («Полное руководство по Lingo»), в следующем году была выпушена книга «The Director 6 Book». В 1999 году в издательстве «Que» вышла книга «Special Edition Using Director 7» («Специальное издание по использованию Director 7»), вслед за ней «Special Edition Using Director 8» («Специальное издание по использованию Director 8») и затем 8.5. После «Macromedia Flash 5 for fun and Games» Гэри написал «Sams Teach Yourself ActionScript in 24 Hours». Гэри выступал на многих конференциях Macromedia и конференциях разработчиков игр.
В свободное время Гэри любит читать классическую фантастику, ходить в кино и путешествовать. Жена Гэри Дэбби (Debby) является владелицей букинистического магазина (https://www.atticbookstore.com/). Гэри и Дэбби живут в Денвере, штат Колорадо, вместе с кошкой Люси (Lucy) и собакой Наташей (Natasha).
//— Посвящение —//
Я посвятил свою третью книгу «Special Edition Director 7» («Специальное издание по использованию Director 7») моей невесте Дебби Томпсон. Я хочу посвятиь эту, девятую написанную мной книгу, моей жене Дебби Розенцвейг.
После того как я написал столько книг, она уже привыкла к тому, что я говорю, заканчивая очередную книгу. Обычно это что-то вроде: «Какой это все-таки ужасный стресс, никогда больше не соглашусь писать книги.» Еще одна вещь, которую она привыкла слышать спустя несколько недель: «Угадай, что случилось? Я опять согласился написать книгу!»
Дебби такая же неотъемлемая часть этой книги, как и я, хотя она и не написала ни одного слова.

Я не смог бы написать эту книгу без ее постоянной любви и поддержки. Я люблю ее больше всего на свете.
//— Благодарности —//
Мне бы хотелось поблагодарить мою жену Дебби, любительницу сразиться со мной в настольные игры на веранде и опробовать последние игровые новинки CleverMedia.
Я признателен своей маме Жаклин (Jacqueline) и папе Джерри (Jerry), благодаря которым в детстве мой шкаф был всегда наполнен играми и которые никогда не выражали недовольство тем, что я слишком много играю в Atari.
Мне бы хотелось выразить признательность моему брату Лэрри (Larry) за то, что он играл со мной, когда я рос, хотя был на несколько лет моложе меня и постоянно проигрывал.
Спасибо моей бабушке, Ребекке Якоб (Rebecca Jacob), купившей мне первый компьютер. Неделю спустя я написал на нем первую игру.
Мне бы хотелось поблагодарить моих тетю и дядю, Барбару (Barbara) и Ричарда Шифрин (Richard Shifrin), которые коллекционировали шахматы и научили меня побеждать в Risk.
Я признателен Уильяму Фоллетте (William Follet), Брайену Роббинсу (Brian Robbins) и Джею Шефферу (Jay Shaffer) – моим друзьям и коллегам по работе в CleverMedia. Поработав с этими ребятами, понимаешь, что наибольшее удовольствие приносит разработка компьютерных игр, чем игра в них.
Хотелось бы сказать спасибо моей родне со стороны жены, Тэйгу (Tage) и Энни Томсенам (Anne Thomsen), а также Андреа Томсену (Andrea Thomsen) за поддержку, оказанную во время написания этой книги.
Я благодарю всех сотрудников издательства «Que», подготовивших книгу к печати: Кэнди Холл (Candy Hall), Лауру Норман (Laura Norman), Тома Хейза (Tom Hayes), Тоню Симпсон (Tonya Simpson), Марго Кэттс (Margo Catts), Криса Бэррика (Chris Barrick), Дуга Скэмэхорна (Doug Scamahorn), Синди Титерс (Cindy Teeters), Михаеля Хантера (Michael Hunter), Трину Варст (Trina Warst), Энни Джоунс (Anne Jones) и Вильяма Фоллета (William Follet).
//— Ждем ваших отзывов и пожеланий! —//
Вы – читатель нашей книги – являетесь нашим самым главным критиком и советчиком. Мы уважаем ваше мнение и хотели бы знать, что нравится в нашей работе, что стоит улучшить, книги на какие темы следует публиковать, и будем рады получить от вас любой ценный совет.
Присылайте ваши сообшения по электронной почте:
Que: feedback@quepublishing.com
ДМК Пресс: dm@dmkpress.ru
Для получения более полной информации об этой книге и других, изданных Que, посетите наш Web-сайт на www.quepublishing.com. Напечатайте ISBN (исключая дефисы) или заглавие книги в поле поиска, чтобы найти интересуюшую вас страницу.

Это второе издание «Macromedia Flash ActionScript for Fun & Games» («Macromedia Flash. Создание игр с помошью ActionScript»). В нем вы найдете материалы, представленные в первом издании, плюс некоторые усовершенствования и 12 новых игр.
Книга знакомит с ActionScript, представляя много законченных программ. Каждая программа содержит определенные количество Action-Script-кодов, с которыми можно ознакомиться, изучить и изменить их. Эти программы представляют собой игрушки, безделушки и игры.
Второе издание предназначено для работы во Flash 8. Несмотря на то, что многие игры из первого издания книги будут еше работать с Flash MX, желательно использовать Flash 8, если вы планируете с помошью этой книги изучить ActionScript.
Хотя Flash MX была первой достаточно серьезной версией Flash, позволяюшей нам делать хорошие игры, базируемые на Web, Flash 8 намного лучше ее. Самое главное – Flash 8 гораздо быстрее ее предшественников. Это означает, что анимации в наших играх будут двигаться более плавно на большем количестве пользовательских компьютеров. Кроме того, теперь можно взяться за более сложные игры, создание которых было трудно реализуемо в предыдушей версии.
Первое издание этой книги оказалось настолько удачным, что я не хотел вносить в нее много изменений. Поэтому вместо переделки книги я просто включил в нее дополнения. В конце каждой главы, с 5-й по 16-ю, есть новая игра, подходяшая по тематике и обычно строяшаяся на том, что было изучено в предыдуших играх главы.
Я также усовершенствовал несколько игр для того, чтобы использовать преимушество некоторых новых возможностей Flash 8. Например, графическая программа в главе 7 «Игрушки-конструкторы» теперь использует графические команды Flash 8 вместо дублирования клипов. В некоторых случаях не имело смысла менять алгоритм работы программы, и я оставил игры с кодом, работаюшим как в версии 8, так и в версии MX.
//— Об этой книге —//
Хотя программа Flash в качестве среды программирования только-только «достигла совершеннолетия», она уже давно известна как отличное средство для создания развлечений. Flash используется для самых разных целей, начиная с разработки дизайна Web-сайта и заканчивая созданием больших анимаций.
ActionScript – это еше один аспект Flash, также связанный с развлечениями. Основная задача данной книги – обучить созданию игр при помоши Flash.
В главе 1 «Инструменты Flash, используемые для создания игр» мы еше раз рассмотрим основы Flash, обрашая особое внимание на то, как различные инструменты этой программы используются для создания интерактивных приложений. Глава 2 «Введение в ActionScript» пригодится имеюшим большой опыт работы с Flash, но мало занимаюшимся программированием. Она также будет интересна тем, кто знает другие языки программирования, однако никогда не имел дела с ActionScript.
Глава 3 «Элементы ActionScript для создания игр» рассматривает различные элементы и приемы ActionScript и демонстрирует, как с их помошью создавать игры и анимации. Данная глава содержит основные сведения, необходимые для дальнейшей работы с книгой. Из главы 4 «Процесс создания игры» вы узнаете о планировании и программировании игр.
Оставшаяся часть книги, кроме последней главы, содержит примеры программ, в том числе их исходные тексты. Глава 5 «Создание визуальных эффектов», глава 6 «Игрушки и безделушки», глава 7 «Игрушки-конструкторы» описывают игрушки, которые предназначены для развлечения, но не обязательно являются игрой как таковой. В главах 8 «Игры типа «Найди и нажми»», 9 «Игры типа «Поймай или пропусти»», 10 «Игры типа «Прицелься и выстрели»», 11 «Игры с мячом и битой», 12 «Викторины и загадки со словами», 13 «Мозаика», 14 «Головоломки», 15 «Казино и карточные игры» и 16 «Аркады» описываются собственно игры.
Каждый раздел глав 5-16 начинается с описания того, как была создана данная игра. Затем вы знакомитесь с моим подходом к ее построению. Далее дается обзор элементов, составляюших игру. В конце приводится текст программы игры с подробным разбором каждой ее части. Каждая глава заканчивается советами по усовершенствованию игры.
В последней, 17-й, главе «Сложные приемы» вы изучите некоторые специальные приемы, такие как создание списка игроков, набравших наибольшее количество очков, и окна предварительной загрузки. И наконец, не пропустите содержательный список Web-ресурсов в приложении А «Ресурсы Internet для пользователей Flash».
Хотелось бы обратить ваше внимание на то, что в книге содержится множество программ на ActionScript! В ней их больше, чем в любой другой книге, посвяшенной Flash. Здесь около 37 игр с исходными кодами, напечатанными в книге и доступными по адресу https://www.dmk-press.ru.

Это практическое руководство по изучению ActionScript, а не книга для тупиц или идиотов. Следовательно, я не веду читателя за руку по всем этапам проекта, описываемого в главе. Если какой-то прием объяснялся ранее, я не буду повторяться. Вместо этого я расскажу о более сложных вешах и других приемах, таким образом, вы всегда будете изучать что-нибудь новое.
Книга требует обдуманного изучения. Если вы не поняли что-то с первого раза, попробуйте перечитать объяснения еше раз, посмотрите пример на Web-сайте и поэкспериментируйте с данным приемом в Flash, прежде чем двигаться дальше. Это поможет вам более глубоко понять принципы функционирования ActionScript и его применения в других проектах.
Данная книга предназначена для различных специалистов. Если на ней остановился ваш взгляд в традиционном книжном или Internet-магазине или вы взяли ее у друга, тогда, возможно, вы принадлежите к одной из следующих групп.
//— Аниматоры —//
Будучи аниматором, вы уже используете Flash для создания линейной анимации. Вероятно, вы также знаете, как создать пару-другую кнопок. Эта книга перенесет вас в чудесный мир программирования на ActionScript. Вы научитесь помешать созданных вами анимированных героев и окружаюшую их обстановку в игрушки и игры.
//— Иллюстраторы —//
Если вы художник-оформитель, не исключено, что вы работали во Flash или в другой векторной графической программе. Вы можете научиться рисовать во Flash 8, используя обучаюшие программы, предлагаемые самим редактором, а затем при помоши этой книги сделать так, чтобы ваши рисунки взаимодействовали с пользователем в игрушках и играх.
//— Программисты —//
Возможно, вы программист, имеюший опыт работы с другими языками: Java, C++ или Lingo. Книга научит вас применять эти знания во Flash. Достаточно полный обзор основ ActionScript вы найдете в главах 1–3; если же вас интересуют исходные программы, переходите сразу к главе 5.
//— Программисты, работающие во Flash 3 и Flash 4 —//
Эта книга также подойдет программистам, работаюшим во Flash 3 и Flash 4 и желаюшим приобрести руководство, которое поможет им овладеть Flash 8. Между Flash 8 или Flash MX и более ранними версиями программы сушествует довольно много различий, что особенно заметно в командах и устройстве рабочего пространства. Для того чтобы действительно научиться работать во Flash MX, придется забыть многие приемы, используемые в предыдуших версиях, и начать учиться с нуля.
//— Владельцы домашних Web-страниц —//
Может быть, вы и не специалист в области компьютерных знаний, но у вас есть своя домашняя страница и немного свободного времени для пополнения багажа ваших знаний. Flash 8 может служить относительно недорогим инструментом для улучшения вашего сайта. Возьмите любую понравившуюся вам игру из книги, немного измените графику и напишите свою собственную игру. Не ожидайте чудес, не уделив достаточно времени изучению основ Flash и материала глав с 1 по 4. Тем не менее способный ученик добьется успеха довольно быстро.
//— Профессиональные разработчики Web-сайтов —//
Как профессиональный разработчик Web-сайтов вы, без сомнения, обладаете соответствуюшими практическими навыками и должны иметь не только обшее представление о HTML, таблицах стилей, JavaScript, Perl, программах Photoshop, Fireworks, Dreamwaver и т. п. Пакет Flash довольно быстро приобретает статус программы, которую должен знать любой разработчик Web-сайтов.
Однако одного знания основ не достаточно. В конечном итоге с их помошью вам придется что-то создавать. Другие книги учат основам и затем предоставляют читателю возможность доходить своим умом до того, как складывать полученные элементы вместе для создания полноценных программ, а эта книга показывает ему, как составлять такие программы.
Данная книга научит вас разрабатывать свои собственные программы с нуля или быстро создавать свою версию уже имеюшейся игры.
//— Студенты —//
В настояшее время Flash преподается во многих колледжах и университетах. С увеличением интереса к Flash эта тенденция будет постоянно усиливаться. Книга может использоваться студентами в качестве практического пособия по изучению ActionScript. Если на занятиях вас обучают только основам Flash, используйте эту книгу, чтобы быть впереди всех. Но если вы уже проходите довольно сложные веши, книга будет хорошим практическим пособием.

Данная книга представляет собой не учебник по Flash, а практическое руководство по изучению Flash 8 ActionScript. Подразумевается, что вы уже немного знакомы с рабочей средой Flash и имеете какой-то опыт работы с программой.
При этом вы, также как и я, не обязаны быть профессиональным художником-графиком. У многих людей Flash ассоциируется только со способностями к рисованию. Это действительно было необходимо в более ранних версиях Flash, в которых графика была единственным инструментом, однако теперь Flash является еше и средой программирования. Таким образом, данная книга будет одинаково интересна и профессиональным иллюстраторам, и программистам.
Но для начала вам необходимо:
• знать основы Flash и уметь их использовать;
Ф быть знакомым с содержанием обучаюших программ Flash 8;
Ф уметь работать с главной временной шкалой, добавлять кадры и маркировать их;
Ф уметь создавать клипы, кнопки и графические изображения. Они не должны быть первоклассными, вам просто нужно знать процедуру их создания во Flash.
С другой стороны, некоторые смогут использовать эту книгу, даже если они никогда прежде не работали во Flash. Если вы – способный и усидчивый ученик, готовый с головой уйти в новый предмет до его полного изучения, данная книга позволит вам, быстро освоив основные приемы Flash, перейти к профессиональному программированию в ActionScript.

Теперь, когда мы определили, что вы относитесь к одной из вышеперечисленных групп специалистов, возникает вопрос: чему вас может научить эта книга?
//— Изучение ActionScript —//
Сушествует несколько способов применения данной книги, первый из них – изучение ActionScript. Эта книга ни в коем случае не является руководством для начинаюших, она научит вас использовать ActionScript для более сложных вешей.
Вы освоите множество команд, функций и приемов, используюшихся в играх и других приложениях. Вы не только узнаете, какие функции они выполняют, но и увидите их в действии на примере реальных программ.
//— Создание игр во Flash —//
Каждая программа, содержашаяся в данной книге, может считаться одной из разновидностей игр или частью игры. Даже если вы уже знакомы с ActionScript, книга научит использовать ваши знания для создания игр. В главе 4 я подробно расскажу о том, как создаются игры. Оставшаяся часть книги заполнена примерами.
//— Использование готовых игр —//
Конечно, вы можете купить эту книгу, взять из нее исходные программы и создавать свои собственные игры. Вы можете, не меняя программы, опубликовать игры на вашем Web-сайте, однако вы наверняка захотите вначале придать им ваш собственный графический стиль.
Имейте в виду, однако, что книга и содержашиеся в ней исходные программы предназначены для тех, кто заинтересован в изучении ActionScript. Не думайте, что вы сможете сразу же перейти к главе 16 и начать составлять программы. Возможно, у некоторых это и получится, однако большинство столкнется с трудностями, не изучив информацию глав 1-15.
Глава 4 научит вас некоторым тонкостям переделывания уже готовых игр в ваши собственные. В каждой главе также содержатся предложения о том, что можно изменить в играх, чтобы они стали вашими собственными.

Подобная книга не принесла бы много пользы, если бы вам пришлось набирать листинг каждой исходной программы вручную. Структура роликов Flash, множество различных элементов которых – клипы, кнопки и графические образы – необходимо поместить в строго определенное место, еше более усложняет задачу.
Чтобы лучше разобраться в программах, всегда обрашайтесь к сайту, где размешены файлы с исходными текстами программам: https://www.dmkpress.ru.
Изучая очередной проект, не забудьте открыть пример ролика на сайте и посмотреть программу в действии. Вы можете использовать исходный файл для внесения изменений или тестирования новой программы.
Следуюший символ укажет вам, какой файл нужно использовать:
Исходный файл: Example.fla
Возможно, набор вручную исходных программ и попытка воспроизведения примеров и является хорошей практикой, однако даже самому аккуратному разработчику будет непросто полностью воссоздать сложные программы со страниц данной книги.

Для лучшего понимания материала в книге принято несколько условных обозначений. Любое слово, выделенное моноширинным шрифтом, является командой, функцией или другим элементом синтаксиса ActionScript. Все эти элементы можно найти в документации по Flash. Примерами являются: gotoAndPlay(), stop(), _x.
Полужирным моноширинным шрифтом записывается элемент синтаксиса, определяемый пользователем, например myVariable. Обычно он представляет собой имя переменной или определяемое пользователем название функции.
Просматривая программу, вы увидите две косые черты, идушие друг за другом: //. Они говорят о том, что текст, идуший за ними, является комментарием. Если данное обозначение встретится вам в начале строки, значит, комментарием является вся строка. Если в набранной вами программе комментариев не будет, от этого ничего не изменится. Комментарии нужны для лучшего понимания алгоритма программ вами и теми людьми, которые будут ее модифицировать. Но лучше, если снабжение программ комментариями войдет у вас в привычку. Коментирование кодов поможет вам и вашим коллегам редактировать в будушем ваши проекты.
Названия роликов и кадров, используемых в программах, помешены в кавычки («»).

Автор и издатели данной книги пытались не допустить ошибок или опечаток. Я пишу по возможности внимательно, а несколько редакторов просматривают написанный текст перед публикацией. Однако при создании подобной книги мы ограничены во времени. Если бы я использовал столько времени, сколько мне необходимо для издания безукоризненной книги, то к моменту выхода из печати она давно бы устарела.
Так или иначе, читатель может обнаружить небольшие несоответствия в некоторых программах. Также имеется вероятность того, что следующие версии или исправленные обновления Flash внесут некоторые изменения в Action-Script, что повлечет необходимость изменения данных программ. В этом случае я помешу обновления и исправления на специальный сайт, имеюший следующий адрес:
https://www.garyrosenzweig.com/books/books9support.html
Там содержится информация о книге для тех, кто еше не купил ее, обновления, ссылки на ресурсы и адрес, по которому вы можете посылать свои отзывы о книге.
//— Желаю приятного прочтения —//
Я надеюсь, что из данной книги вы извлечете что-то полезное для своей карьеры, вашей компании или вашего Web-сайта. Но прежде всего я надеюсь, что книга вам просто понравится.
Хотя многие покупают ее по профессиональным и образовательным причинам, не следует забывать, что она посвяшена играм, а игры – это способ развлечения. Надеюсь, что создание игр вам понравится гораздо больше, чем сам процесс игры.

Мастер Йода рекомендует:  Отчеты ADFOX от Яндекс.Метрики

• Интерфейс Flash
• Создание кнопок
• Создание текста
• Импорт мультимедийных элементов во Flash
• Организация ролика
• Подготовка ролика к публикации

Прежде чем приступить к изучению того, как создаются Flash-игры, давайте попробуем взглянуть на это с точки зрения человека, работающего с Action-Script (язык программирования, используемый в программе). Данная книга не является пособием для начинающих, поэтому в ней не излагаются основы, тем более что в пакет Flash входят специальные обучающие программы. Вместо этого в книге подробно рассматриваются различные инструменты Flash 8 и способы их использования в играх, написанных на ActionScript.
Задача первых четырех глав – развить ваши навыки и тем самым подготовить к изучению примеров, содержащихся в остальных главах книги.

ЭЛЕКТРОННАЯ ШКОЛА MACROMEDIA FLASH MX
III курс: Основы программирования в Macromedia Flash MX
Модуль I: Объектно-ориентированное программирование
Язык ActionScript

Методология программирования

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

Такие позиции программирование занимало на заре развития компьютерной информатики, на рассвете структурного программирования. На программиста смотрели как на шамана. Стать программистом было так же сложно, как космонавтом, и почти столь же почётно.

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

Объектное программирование

Объектно-ориентированное программирование (ООП) — современный способ создания программных кодов, который пришёл на смену структурному программированию. Вернее, объектное программирование не заменило структурное, а довело его до логического совершенства.

В объектно-ориентированных языках можно конструировать не только данные, но данные плюс процедуры (функции):

Объектом в информатике, как и всюду, называют всё, что угодно: число, таблицу, исполнителя, программу, кнопку на экране.

Однако информатика рассматривает объекты с точки зрения информационных процессов. В таком подходе нет ничего удивительного: каждая наука рассматривает объекты со своей точки зрения. Физик, наблюдая полёт пчелы, мысленно прикидывает формулы, которые описывают траекторию движения насекомого. Биолог задумывается о числе глаз, крыльев и ножек. Информатик наблюдает за тем, как своим «танцем» пчела передаёт информацию сородичам о полях медоносных растений.

Обычно информатик выделяет в объекте три составляющие:

  • Какую информацию объект хранит (свойства объекта, данные объекта)?
  • Как объект обрабатывает информацию (алгоритмы объекта, процедуры объекта)?
  • Какую информацию объект передаёт и принимает (события объекта)?

Исследуем обычный телевизор как информационный объект.

Свойства (данные):
цвет: серебристый;
диагональ экрана: 53 см;
вес: 20 кг.

Алгоритмы (процедуры):
включение/выключение: кнопка (I);
переключение программ: кнопки (-), (+) блока PRG;
регулирование звука: кнопки (-), (+) блока ¤.

События:
приём телепередачи;
передача изображения и звука зрителю.

Материальные и виртуальные объекты

Телевизор — это материальный объект. Слово «материальный» означает «реальный», существующий на самом деле. Корпус телевизора сделан из пластика, гладкого на ощупь. Телевизор достаточно тяжёлый — не надо ронять его на ногу: будет больно. Если по телевизору стукнуть молотком, то, скорее всего, он выйдет из строя.

Рассмотрим телевизор изображённый на фотографии в этой лекции. Этот телевизор, конечно, не является материальным (реальным) телевизором. Его нельзя потрогать, понюхать. Он не может упасть на пол. Телевизор на фотографии — это виртуальный объект, то есть не реальный, не существующий на самом деле.

Информационные объекты

Понятие информационного объекта очень удобно для пользователей.

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

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

Менять свойства телевизора мы не можем, но можем их учитывать. А вот свойства виртуальных объектов менять легко.

Современное программирование — объектно-ориентированное. Это означает, что программа, которой предстоит работать на компьютере, создаётся как набор информационных объектов.

Объекты имеют свойства — ячейки памяти для хранения информации и алгоритмы, которые обрабатывают события, — информацию, поступающую от других объектов. Программа, составленная из объектов, не имеет одного общего алгоритма, а работает в результате информационного взаимодействия объектов.

Всё происходит так, как в реальной жизни. Ведь мир вокруг нас состоит из отдельных объектов (людей, животных, предметов, явлений), которые существуют по своим собственным правилам. А общее развитие мира определяется тем, как отдельные объекты взаимодействуют друг с другом.


Объект и экземпляр объекта

Вообще говоря, конкретный телевизор в терминологии ООП — это не объект, а экземпляр объекта. Объектом является комплект документации на заводе, по которой изготовляются телевизоры. Все телевизоры, которые сходят с конвейера, имеют одни и те же свойства и одни и те же алгоритмы управления.

То же и в программировании. Объект — это шаблон. Экземпляр объекта — это рабочая копия.

Предопределённые объекты Macromedia Flash. Язык ActionScript

У тех, кто только начинает работать в Macromedia Flash, может возникнуть иллюзия того, что к объектам мы можем отнести любой графический элемент, находящийся на сцене. Действительно, графические элементы можно перемещать, копировать, удалять, преобразовывать, стыковать, выравнивать, группировать… Они имеют определённые нами в процессе рисования свойства: цвет, размер, форму… Однако термин объект используется в языке программирования ActionScript в другом значении. Самым значимым объектом в Macromedia Flash является объект клип — MovieClip.

Для того чтобы составить некое представление о предопределённых объектах Macromedia Flash сделаем краткий обзор некоторых из них. Обратите внимание, что эти объекты могут быть использованы для доступа и манипулирования некоторыми типами информации:

Объект Math — набор встроенных математических констант и функций: cos (косинус), sin (синус), atan (арктангенс), abs (абсолютное значение числа)…
Объект Sound — позволяет добавлять звуки к клипу и управлять ими во время проигрывания клипа. Например, можно регулировать громкость (setVolume) или баланс (setPan).
Объект Mouse — позволяет скрывать стандартный курсор, чтобы можно было использовать какой-то другой.
Объект MovieClip — позволяет управлять клипом. Клип имеет свойства (например, _height, _rotation, _totalframes) и методы (play, loadMovie или duplicateMovieClip).

Терминология ActionScript

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

Actions (команды) — операторы, которые дают инструкции клипу, что ему делать во время воспроизведения. Например, gotoAndStop переводит воспроизведение на определенный кадр.
Arguments (аргументы), также называются параметрами — позволяют передавать значения функциям.
Classes (классы) — типы данных, которые можно создавать для определения новых типов объектов. Для определения класса объектов, создаются функции-конструкторы.
Constants (константы) — неизменяемые элементы. Например, константа Math.PI всегда имеет определённое значение. Константы полезны для сравнения значений.
Constructors (конструкторы) — функции, используемые для определения свойств и методов класса.
Data types (типы данных) — набор значений и операций. Строки, числа, true и false (булевы) значения, клипы — всё это типы данных ActionScript.
Events (события) — действия, происходящие во время воспроизведения клипа. Например, различные события происходят при загрузке клипа, когда плеер воспроизводит кадр, пользователь щёлкает на кнопке в клипе или нажимает кнопку на клавиатуре.
Expressions (выражения) — любые части операторов, имеющих значения. Например, 2 + 2 это выражение.
Functions (функции) — блоки многократно используемого кода, которым могут быть переданы аргументы (параметры) и которые могут вернуть значения. Например, функции getProperty передаются имя свойства и имя клипа, а возвращается значение этого свойства. Функция getVersion возвращает версию Flash Player, воспроизводящего клип.
Handlers — специальные команды, управляющие событиями, такими как mouseDown или load.
Identifiers (идентификаторы) — имена, используемые для обозначения переменных, свойств, объектов, функций и методов. Первый символ должен быть буквой, знаком подчеркивания (_) или знаком доллара ($). Любой следующий символ должен быть буквой, знаком подчеркивания (_), цифрой или знаком доллара ($). Например, имя переменной firstName.
Instances (экземпляры) — объекты, принадлежащие к определённому классу. Каждый экземпляр класса содержит все свойства и методы этого класса. Все клипы — экземпляры со свойствами (например, _alpha и _visible) и методами (например, gotoAndPlay и getURL) класса MovieClip.
Instance names — уникальные имена, позволяющие указывать экземпляр клипа в скриптах. Например, исходный символ в библиотеке может быть назван counter, а его два экземпляра могут иметь имена scorePlayer1 и scorePlayer2.
Keywords (ключевые слова) — зарезервированные слова, имеющие специальное значение. Например, var — ключевое слово, используемое для объявления локальных переменных.
Methods (методы) — функции, присущие объекту. После того, как функция определена, она может быть вызвана, как метод этого объекта.
Objects (объекты) — коллекции свойств, каждый из которых имеет своё имя и значение. Объекты обеспечивают доступ к различным типам данных. Например, предопределенный объект Date предоставляет информацию от системных часов.
Operators (операторы) — вычисляют новые значения из одного или более значений. Например, оператор сложения (+) складывает два или более значения для получения нового значения.
Properties (свойства) — атрибуты, определяющие объект. Например, _visible — свойство всех клипов, которое определят, видим клип или нет.
Variables (переменные) — идентификаторы, которые содержат значение любых типов данных. Переменные могут быть созданы, изменены и обновлены. Значения, которые они содержат, могут быть запрошены для использования в скрипте.

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

ActionScript позволяет создавать скрипты для клипа (символ типа Movie Clip), кнопки (символ типа Button) или ключевого кадра (Keyframe). Каждый такой скрипт (то есть фактически программа на языке ActionScript) жёстко связан с соответствующим элементом ролика. При публикации ролика текст скрипта, как и другие элементы фильма, экспортируется в swf-файл. Тем не менее, при желании вы можете сохранить его в отдельном файле с расширением as (это обычный текстовый файл), чтобы впоследствии использовать в каком-либо другом фильме.

Палитра Actions (действия)

Палитра Actions (действия) позволяет создавать и редактировать скрипты для объектов (клипов и кнопок), а также ключевых кадров. Можно выбирать заранее определённые команды из списка команд — Toolbox list (в левой части палитры), перетаскивать их в правую часть панели; использовать кнопки расположенные над текстовым полем для выбора команды, её удаления и перестановки команд.

В Normal Mode (нормальный режим) можно писать команды, используя поля параметров (аргументов).

В Expert Mode (экспертный режим) можно писать и редактировать команды прямо в текстовом поле, как в обычном текстовом редакторе.

В ходе создания скрипта путём выбора команд из списка, вы должны обратить внимание на то, что эти команды систематизированы по категориям:

Actions (команды) — процедуры языка ActionScript, имеющие «универсальный» характер, то есть не зависящие от особенностей класса объектов (в отличие от методов объектов, принадлежащих конкретному классу); в эту же категорию входят традиционные для большинства языков программирования высокого уровня операторы логического управления (проверки логических условий, организации цикла и т. п.).

Operators (операторы) — операторы логических и арифметических операций (сложение, вычитание, сравнение и т.п.).

Functions (функции) — предопределенные (библиотечные) функции (например, в их число входит функция проверки номера версии Flash-плеера).

Constant (константы).

Properties (свойства) — свойства объектов, не зависящие от класса (например, уровень прозрачности изображения).

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

Deprecated (осуждаемые) — конструкции, которые не рекомендуется использовать в скриптах (как устаревшие).

Flash UI Components (компоненты пользовательского интерфейса).

Кроме перечисленных разделов, в списке Action Toolbox имеется также раздел Index, который содержит алфавитный перечень всех компонентов языка.

Подсветка и проверка синтаксиса

Система подсветки синтаксиса окрашивает определённые элементы ActionScript в разные цвета.

Ключевые слова и предопределённые идентификаторы (например, gotoAndStop, play и stop) подсвечиваются тёмным синим цветом.

Комментарии подсвечиваются бледным серым цветом.

Строки, окружённые кавычками, ярким синим цветом.

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

Для проверки текущего скрипта на наличие ошибок, следует использовать раздел Check Syntax из выпадающего меню в правом верхнем углу палитры Actions или соответствующую кнопку (галочка голубого цвета в Expert Mode).

Практикум. Разбор скриптов
Ролик №1

Перед вами очень скромный ролик, в котором организована работа гиперссылок. Текстовой блок, присутствующий в ролике, представляет собой статический текст, для которого в палитре Properties определены следующие свойства:

В раздел URL link записан адрес документа. В разделе Target вы указываете окно или фрейм, в который должен быть загружен запрошенный документ. В данном ролике документ будет загружен в новое окно браузера.

Для кнопки создаём скрипт, используя палитру Actions. Для этого выделяем кнопку с помощью инструмента Arrow и разворачиваем палитру Actions.

Для того чтобы использовать в своей работе команду getURL обратитесь к категории Actions > Browser/Network > getURL. Затем, обратившись к полям параметров, определитесь с адресом документа…
Прокомментирую подробнее некоторые нюансы работы с палитрой Actions в этом ролике.

Параметр Window задаёт окно или фрейм, в который должен быть загружен запрошенный документ. Значение параметра выбирается с помощью раскрывающегося списка, который содержит следующие варианты (они аналогичны значениям атрибута target тэга в языке HTML):

_self — документ будет загружен в текущее окно, или фрейм;
_blank — документ будет загружен в новое окно;
_parent — документ будет загружен в родительский или текущий фрейм;
_top — документ будет загружен во фрейм более высокого уровня иерархии или в текущее окно.

При необходимости значение данного параметра может быть получено как результат вычисления выражения. В этом случае следует установить флажок Expression (выражение), расположенный справа от списка Window.

Параметр Variables позволяет указать способ пересылки данных по заданному URL. Значение параметра выбирается из раскрывающегося списка, который содержит три варианта:

Don’t send (не отправлять) — пересылка данных не требуется;
Send using GET (отправить, используя GET) — для пересылки данных будет использован метод GET;
Send using POST (отправить, используя POST) — для пересылки данных будет использован метод POST.

Напомню, что различие в использовании методов GET и POST для пересылки данных на сервер состоит в том, что при первом из них пересылаемые данные присоединяются к строке адреса. Поскольку длина адреса ограничена 256 символами, то ограничен также и объём пересылаемых данных.


Обратите внимание на то, что команда getURL была автоматически помещена в фигурные скобки некой on(release). Дело в том, что когда вы назначаете действие кнопке или клипу, Flash автоматически генерирует специальную управляющую процедуру (handler), которая во многих объектно-ориентированных языках называется «обработчик события» (или «селектор»). Обработчик проверяет, произошло ли событие определённого типа, и если да, то инициирует соответствующую последовательность действий, заключённых в фигурные скобки.

Для кнопок обработчик имеет имя on, а для клипов — onClipEvent. Имя обработчика предшествует списку событий, на которые обработчик должен реагировать. Например, конструкция:
on(release, KeyPress:»A»)
означает, что обработчик должен реагировать на события двух типов: release (кнопка мыши отжата) и KeyPress:»A» (на клавиатуре нажата клавиша «А»).

Для кнопок в языке ActionScript предусмотрены следующие типы событий:

Press — пользователь нажимает кнопку мыши, когда указатель находится над изображением кнопки (фильма).

Release — пользователь нажимает и затем отпускает кнопку мыши (указатель находится над изображением кнопки).

Release Outside — пользователь отпускает кнопку мыши, когда указатель не находится над изображением кнопки.

Key Press — пользователь нажимает определённую клавишу на клавиатуре; для данного события необходимо дополнительно указать клавишу.

Roll Over — пользователь перемещает указатель над изображением кнопки.

Roll Out — пользователь перемещает указатель за пределы изображения кнопки.

Drag Over — пользователь нажимает кнопку мыши, когда указатель находится над кнопкой, выводит его за пределы кнопки, и затем опять устанавливает над кнопкой.

Drag Out — пользователь нажимает кнопку мыши, когда указатель находится над кнопкой, и затем выводит его за пределы кнопки.

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

И последнее, в ролике работает только один кадр и один слой.

Ролик №2

В этом ролике мы с вами научимся прописывать акции и кнопке и кадру и клипу.

Для комфортной работы в ролике вам следует создать три слоя.

Слой action. В этом слое, как впрочем, и во всех остальных только один кадр, он пуст, является ключевым и ему прописан скрипт:

Эти строчки определяют поведение вашего ролика в процессе проигрывания. Первая строка позволяет убрать меню в плеере (это очень важно, когда ваш ролик представляет собой программу тестирования, и пользователь должен быть лишён права сделать шаг назад Control > Step Back). Вторая строка разворачивает ваш ролик на весь экран. Для того чтобы прописать эти строки вам необходимо встать на это кадр и обратиться к категории Actions > Browser/Network > fscommand.

Слой penguin. На этом слое расположены блоки статического и динамического текста, кнопка и клип. Блоки статического текста выделены зелёным цветом, блоки динамического текста красным цветом.

Во-первых, определимся с блоками динамического текста. Для создания блока динамического текста используется уже хорошо знакомый вам инструмент Text. Однако содержимое блока остаётся пустым. Заполнение этих блоков данными мы поручим кнопке. Размер блоков можно будет подкорректировать в процессе отладки ролика. Каждому блоку динамического текста необходимо присвоить имя. Обратите внимание на палитру Properties. В разделе Text Type выберите Dynamic Text, в разделе Var (Variable) определите имя блока.

Например, в этом ролике для динамического блока, расположенного напротив статического текста «ширина экземпляра» определено имя w, для высоты экземпляра h, имени экземпляра n, координаты точки регистрации экземпляра два блока x и y. Обратите внимание, что блоки динамического текста Flash выделяет пунктирной линией.

Во-вторых, создадим клип, в который будет помещён графический элемент — пингвин. В этом ролике это импортированная графика в формате wmf. После того как графика будет импортирована, используем команду Convert to Symbol и превратим её в клип (символ типа Movie Clip), назовём его, к примеру, penguin_vl. Клип будет автоматически помещён в библиотеку ролика, а вот со сцены его следует удалить. Следующий шаг это создание нового клипа. Используем команду New Symbol, назовём этот клип penguin_or. В первом кадре этого клипа, используя библиотеку ролика, поместите экземпляр клипа penguin_vl (именно ему в последующем мы пропишем скрипт). Добавьте в клип ещё один ключевой кадр.

Вернитесь на сцену и поместите на неё экземпляр клипа penguin_or. И не просто поместите, а пропишите его на сцене. Для этого обратитесь к палитре Properties, и в разделе Instance Name укажите имя экземпляра, например penguin (впрочем, ваше право, дать ему то имя, которое вы пожелаете, не забывайте только правила формирования имён в ActionScript). Теперь произведём редакцию клипа, экземпляр которого был помещён на сцену, используем для этого команду Edit. Клипу в первом кадре пропишем скрипт:

Команда setProperty позволяет изменять свойство экземпляра клипа во время воспроизведения ролика. Давайте попробуем разобраться в синтаксисе, используя общий формат команды:

target — это путь к экземпляру клипа, чьё свойство нужно изменить (_root.penguin, зная путь к экземпляру, мы обращаемся к нему по имени, которое мы присвоили ему в палитре Properties).

property — свойство, которое нужно изменить (_alpha, в нашем случае это прозрачность экземпляра).

expression — значение, присваиваемое свойству (random(50)+50, случайное число от 50 до 100). Обязательно установите флажок Expression. Так как значение данного параметра должно быть получено как результат вычисления выражения.

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

И ещё, почему перед именем экземпляра прописанного на сцене стоит _root?

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

Это окно содержит следующие основные элементы интерфейса:

Дерево фильма, отражающее иерархию объектов фильма, к которым возможно обращение из скрипта.

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

Корневой элемент дерева зависит от способа адресации: для абсолютного адреса — это ключевое слово _root (то есть основной фильм), для относительной — слово this (то есть текущая временная диаграмма).

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

Пара переключателей Mode (режим), которые позволяют выбирать способ адресации (относительный — Relative или абсолютный — Absolute). По умолчанию используется относительная адресация.

Пара переключателей Notation (нотация), которые позволяют выбирать формат записи пути назначения: вариант Dotes (точки) означает применение точечной нотации; вариант Slashes (слэши) соответствует записи с использованием слэшей (это «устаревший» стиль, используемый для совместимости с предыдущими версиями ActionScript). При использовании слэшей формат записи аналогичен тому, который применяется для записи URL в HTML-документах.

Продолжим работу над роликом.

На этот же слой нужно поместить кнопку. В этом ролике я воспользовалась библиотекой Flash.

Кнопке прописываем скрипт:

Функция getProperty возвращает значение указанного свойства указанного клипа. Давайте попробуем разобраться в синтаксисе, используя общий формат команды:

instancename — имя экземпляра клипа, свойство которого необходимо получить.

property — имя свойства клипа.

Для того чтобы присвоить w значение, вычисляемое функцией вам необходимо обратиться к категории Action > Variables > set variable.

Слой ramka. Это слой с декорациями.


Протестируйте ролик и если это необходимо произведите его коррекцию. Поэкспериментируйте со свойствами.

Домашнее задание: Основы программирования в Macromedia Flash MX

В домашних заданиях этого курса будут звучат замечательные афоризмы.

Наше знание похоже на шар, чем больше оно становиться, тем больше у него точек прикосновения с неизвестным.
Ефремов Иван Антонович

Продублируйте ролики, представленные в этой лекции.

Выполненное задание представьте в виде файлов в формате fla (если суммарный размер файлов превысит 150 Кб, пожалуйста, упакуйте файлы в архив) и вышлите учителю.

Тест: Основы программирования в Macromedia Flash MX

В материалы теста входят вопросы, которые позволят вам проверить прочность знаний полученных в ходе работы над первым модулем курса.
Тест создан в Macromedia Flash MX и представляет собой интерактивный flash-ролик: Загрузить тест в новом окне.

Программирование во Flash MX 2004 — Action Script 2.0 — Гурский Д.

Программирование во Flash MX 2004Action Script 2.0Гурский Д.

Что может ActionScript? Ответить на этот вопрос не так легко. Проще сказать, что вы сможете сделать, им не владея. Пожалуй, вы будете способны создавать мультфильмы — и больше ничего. Конечно, Flash как анимационный пакет — это самое важное ее проявление. Но и остальные возможности программы, обеспечиваемые ActionScript, не менее интересны. Чаще всего рядовому пользователю Интернета Flash-фильмы встречаются в виде баннеров. В простейшем случае это просто анимации, дополненные тремя строчками кода ActionScript. Но иногда попадаются крайне интересные интерактивные баннеры, реализация которых при помощи тех же анимированных gif-ов была бы невозможна. Например, существует баннер, при наведении на который курсора мыши он «охватывается пламенем». Чтобы реализовать подобного рода эффекты, без программирования не обойтись.
Используя ActionScript, можно создавать целые сайты. Однако это, ввиду нарушения полными Flash-страницами многих важных принципов usability и сложности разработки по сравнению с более привычными технологиями, практикуется не так часто. В основном Flash применяется для создания отдельных элементов интерфейса Web-страниц. Анимированные меню и заставки можно увидеть на очень многих сайтах. Реже при помощи ActionScript реализуются галереи, вопросники и формы. Сайт, созданный с использованием Flash, обычно выглядит куда более впечатляюще, чем его «коллега», разработанный только средствами HTML. Именно поэтому Flash-сайты оплачиваются лучше, чем обычные.

Оглавление
Вступление
Глава 1. Язык сценариев. ActionScript: начальные сведения
1.1. Среда разработки ActionScript: настройка и приемы работы
1.1.1. Различие между стандартной и профессиональной версиями Flash
1.1.2. Панель Actions
1.1.3. Режим упрощенного ввода кода. Панель Behaviors
1.1.4. Как упростить создание кода на панели Actions
1.1.5. Типы сценариев
1.1.6. Централизация кода
1.1.7. Инструменты работы с кодом
1.1.8. Настройки стиля кода
1.1.9. Сохранение ActionScript-кода
1.1.10. Функция trace() и панель Output
1.1.11. Справочная информация
1.2. Синтаксис ActionScript
1.2.1. Пробельные символы
1.2.2. Завершение предложений
1.2.3. Чувствительность к регистру
1.2.4. Зарезервированные слова ActionScript
1.2.5. Принципы присвоения имен
1.2.6. Комментарии
1.3. Основные понятия
1.3.1. ЕСМА-262 как основа ActionScript
1.3.2. ActionScript как скриптовый язык Flash-плейера
1.3.3. Интерпретатор ActionScript. Flash-ассемблер
1.3.4. Символы и экземпляры символов
1.3.5. Переменные
1.3.6. Функции
1.3.7. Условные предложения
1.3.8. Циклы
1.3.9. Массивы
1.3.10. Объектная модель ActionScript
1.3.11. Свойства _root, _parent, Leveln и ключевое слово this
1.3.12. Области видимости кода
Проект 1: Прыгающий мяч (программная анимация)

Глава 2. Типы данных
2.1. Определение типа объекта данных
2.2. Числа (тип number)
2.2.1. Виды чисел в ActionScript
2.2.2. Особенности представления чисел
2.2.3. Операции с числами
2.2.4. Класс Number — методы и свойства
2.2.5. Преобразование строк в числа. Функции parseInt() и parseFloat()
2.3. Математические функции и константы. Объект Math
2.3.1. Особенности реализации математических функций
2.3.2. Возведение в степень и вычисление квадратного корня
2.3.3. Экспонента и натуральный логарифм
2.3.4. Модуль числа
2.3.5. Случайные числа
2.3.6. Округление до целого числа
2.3.7. Сравнение пары чисел
2.3.8. Тригонометрические функции
2.3.9. Математические константы
2.4. Строки (тип string)
2.4.1. Создание строк
2.4.2. Элементарные операции со строками
2.4.3. Класс String
2.4.4. Определение длины строки. Свойство lengths
2.4.5. Соединение строк. Метод concat()
2.4.6. Выделение символа строки по индексу. Метод charAt()
2.4.7. Поиск в строке. Методы indexOf() и lastIndexOff()
2.4.8. Извлечение подстроки. Методы substring(), substr(), slice()
2.4.9. Преобразование строк в массивы. Метод split()
2.4.10. Изменение регистра символов. Методы toLowerCase() и toUpperCase()
2.4.11. Использование кода символов. Методы fromCharCode() и charCodeAt()
2.4.12. Преобразование строк в идентификаторы. Функция eval()
2.4.13. Текстовые поля
2.5. Кодировка символов. Уникод во Flash
2.5.1. Немного истории
2.5.2. Поддержка уникода Flash-плейером
2.5.3. Поддержка уникода средой разработки
2.5.4. Добавление символов уникода
2.5.5. Импорт данных в 8-битных кодировках. Свойство System.useCodepage
2.6. Логические величины (тип boolean)
2.6.1. Класс Boolean
2.7. Тип undefined
2.8. Тип null
2.9. Объекты (тип object)
2.9.1. Атрибуты свойств
2.9.2. Изменение атрибутов свойств. Функция ASSetPropFlags()
2.10. Клипы (тип movieclip)
2.11. Преобразование типов данных
2.11.1. Правила преобразования типов
2.11.2. Автоматическое преобразование типов
2.12. Строгая типизация в ActionScript
Проект 2: Калькулятор

Глава 3. Переменные
3.1. Создание переменных
3.2. Особенности типизации переменных
3.3. Локальные переменные функций
3.4. Глобальные переменные
3.5. Особенности операции присваивания
3.6. Есть ли переменные в ActionScript?
3.7. Удаление переменных
Проект 3: Пружинный маятник

Глава 4. Функции
4.1. Создание функций
4.2. Вызов функций
4.3. Предложение return
4.4. Рекурсия
4.5. Особенности цепочки областей видимости функций
4.6. Объект arguments
4.6.1. Формальные параметры и объект arguments
4.6.2. Свойства объекта arguments
4.7. Особенности передачи в функции составных объектов данных
4.8. Функции как объекты
4.8.1. Класс Function
4.8.2. Свойство prototype
4.8.3. Методы вызова функции
4.9. Функции на стадии выполнения. Объект активации
Проект 4: Крестики-нолики

Мастер Йода рекомендует:  Локальная реклама Javascript

Глава 5. Операторы
5.1. Виды операторов
5.2. Иерархия операций
5.3. Сочетательность операций
5.4. Арифметические операторы
5.5. Операторы присваивания
5.5.1. Оператор =
5.5.2. Операторы присваивания с модификацией
5.5.3. Инкрементирование и декрементирование
5.6. Операторы равенства и сравнения
5.6.1. Операторы равенства
5.6.2. Операторы сравнения
5.7. Логические операторы
5.8. Условный оператор (?:)
5.9. Служебные операторы
5.9.1. Инициализаторы литералов
5.9.2. Оператор группирования
5.9.3. Операторы доступа к свойствам
5.9.4. Оператор вызова функции
5.9.5. Оператор new
5.9.6. Оператор super
5.9.7. Оператор delete
5.9.8. Оператор typeof
5.9.9. Оператор instanceof
5.9.10. Оператор void
5.9.11. Оператор стр.запятаястр.
5.10. Поразрядные операторы
5.10.1. Логические поразрядные операторы
5.10.2. Операторы поразрядного сдвига
Проект 5: 3D-конструктор

Глава 6. Предложения
6.1. Блок предложений
6.2. Предложения var и function
6.3. Предложения выражений и пустые предложения
6.4. Предложение return
6.5. Предложение with
6.6. Условные предложения
6.6.1. Предложение if
6.6.2. Предложение switch
6.7. Циклы
6.7.1. Циклы с предусловием (while и do-while)
6.7.2. Цикл с параметром (for)
6.7.3. Цикл for-in
6.7.4. Предложения break и continue
6.7.5. Ограничение на время выполнения кода
6.7.6. Циклы события onEnterFrame и временной диаграммы
6.7.7. Циклический вызов функций. Функция setInterval()
6.8. Обработка исключительных ситуаций. Предложения try-catch-finally, throw и класс Error
Проект 6: Тетрис

Глава 7. Массивы (класс Array)
7.1. Создание массивов
7.2. Извлечение и переопределение элементов массива
7.3. Длина массива. Свойство length
7.4. Добавление элементов в массив
7.5. Удаление элементов массива
7.6. Слияние массивов
7.7. Выделение фрагмента массива
7.8. Инверсия массива
7.9. Сортировка массива
7.10. Преобразование массива в строку
7.11. Многомерные массивы
7.12. Особенности использования цикла for-in для обработки массивов
7.13. Особенности реализации массивов в ActionScript
Проект 7: Пиксельное табло

Глава 8. События
8.1. Модель событий Генератор-Листенеры
8.1.1. Обработчики событий
8.1.2. Листенеры
8.2. Событийные методы
8.3. Модель событий Flash 5
8.4. Обновление экрана при событиях
8.5. Объект AsBroadcaster. Ядро модели событий Генератор-Листенеры
Проект 8: Создаем события сами

Глава 9. Объектно-ориентированное программирование
9.1. Основные принципы объектно-ориентированного программирования
9.2. Объектно-ориентированное программирование в стиле ActionScript 1.0
9.2.1. Объекты
9.2.2. Свойства
9.2.3. Методы
9.2.4. Классы
9.2.5. Наследование
9.2.6. Создание надклассов и подклассов
9.2.7. Концепция создания надклассов Flash 6
9.2.8. Оператор super
9.2.9. Свойства и методы конструктора класса
9.2.10. Определение принадлежности объекта к классу
9.2.11. Цепочка областей видимости. Объект Global
9.3. Класс Object
9.3.1. Создание объектов класса Object
9.3.2. Метод registerClass(). Выделение экземпляров клипа в класс
9.3.3. Метод addProperty(). Свойства типа getter/setter
9.3.4. Методы watch() и unwatch(). События изменений свойств
9.3.5. Прочие методы класса Object
9.4. Объектно-ориентированное программирование в стиле ActionScript 2.0
9.4.1. Создание классов
9.4.2. Задание наследуемых свойств и методов класса
9.4.3. Конструктор класса. Инициализация собственных свойств и методов объектов
9.4.4. Особенности задания методов в AciionScript2.0
9.4.5. Статичные члены класса
9.4.6. Доступные и скрытые члены класса
9.4.7. Динамические классы
9.4.8. Наследование
9.4.9. Интерфейсы
9.4.10. Свойства типа getter/setter
9.4.11. Выделение экземпляров символа в подкласс
9.4.12. Особенности контроля на этапе компиляции
9.4.13. Особенности импорта внешних классов
9.4.14. Пакеты
9.4.15. Встроенные классы. Директива intrinsic
Проект 9: Модель идеального газа

Глава 10. Клипы
10.1. Глобальные функции и свойства
10.2. Отличия клипов от объектов
10.2.1. Свойства клипов
10.3. Клипы как носители кода
10.3.1. Последовательность выполнения кода
10.3.2. Особенности использования свойств и методов класса MovieClip
10.4. Особенности основной временной диаграммы _root
10.5. Создание экземпляров клипов
10.5.1. Метод duplicateMovieClip()
10.5.2. Метод attachMovie(). Задание идентификатора для программного экспорта
10.5.3. Метод createEmptyMovieClip(). Создание пустого клипа
10.6. Виртуальные слои клипов
10.6.1. Изменение глубины клипа. Метод swapDepths()
10.6.2. Поиск свободной глубины. Методы getlnstanceAtDepth() и getNextHighestDepth()
10.7. Импорт внешних фильмов и изображений
10.7.1. Уровни flash-плейера. Одновременное проигрывание нескольких фильмов
10.7.2. Импорт внешних фильмов при помощи функций loadMovie() и loadMovieNum()
10.7.3. Импорт изображений
10.7.4. Импорт фильмов и изображений при помощи класса MovieClipLoader
10.7.5. Создание предзагрузчиков
10.7.6. Кэширование swf-фильмов
10.7.7. Изменение глубины основной временной диаграммы
10.7.8. Доступ из одного фильма к объектам другого
10.7.9. Обобщенные библиотеки
10.8. Имена экземпляров клипов
10.9. Ссылки на клипы
10.9.1. Свойство _lockroot
10.9.2. Определение пути к клипу
10.9.3. Инструмент Insert Target Path
10.10. Система координат клипов
10.10.1. Свойства _x и _y
10.10.2. Пересчет координат из одной системы в другую
10.10.3. Масштаб осей
10.10.4. Размер клипа
10.10.5. Границы клипа
10.10.6. Поворот системы координат
10.11. Прозрачность и видимость клипа
10.11.1. Свойство _alpha
10.11.2. Свойство _visible
10.12. Перемещаемые клипы. Метод startDrag()
10.12.1. Свойство _droptarget
10.13. Коллизии клипов. Метод hitTest()
10.13.1. Определение пересечения двух клипов
10.13.2. Определение принадлежности точки к клипу
10.13.3. Определение коллизии клипов с использованием поточечного перебора
10.14. Управление временной диаграммой
10.14.1. Начало и остановка проигрывания клипа
10.14.2. Переход на новый кадр
10.14.3. Определение номера проигрываемого кадра
10.15. Программные маски
10.16. Удаление экземпляров клипов и фильмов
10.16.1. Удаление экземпляров. Метод removeMovieClip()
10.16.2. Выгрузка содержимого экземпляров. Метод unloadMovie()
10.16.3. Выгрузка фильмов
10.17. События
10.17.1. Создание обработчиков событий в стиле Flash 5
10.17.2. Событие смены кадров (onEnterFrame)
10.17.3. Событие загрузки клипа (onLoad)
10.17.4. Событие выгрузки клипа (onUnload)
10.17.5. Событие поступления данных (onData)
10.17.6. События мыши (onMouseDown, onMouseUp, onMouseMove)
10.17.7. События клавиатуры (onKeyDown, onKeyUp)
10.17.8. стр.Кнопочныестр. события
10.17.9. События фокуса (onSetFocus, onKillFocus)
10.18. Программное рисование
10.18.1. Рисование прямыми отрезками
10.18.2. Рисование фрагментами парабол
10.18.3. Однородная заливка
10.18.4. Градиентная заливка
10.18.5. Удаление программной графики
10.19. Управление цветом клипов. Класс Color
10.19.1. Цветовые модели
10.19.2. Задание формулы цвета
10.19.3. Задание цвета клипа. Метод setRGB()
10.19.4. Цветовые трансформации. Метод setTransform()
Проект 10: Рисование 3D-объектов

Глава 11. Кнопки
11.1. Создание кнопок
11.2. Сходства и различия кнопок и клипов
11.3. События кнопок
11.3.1. Особенности событий кнопок
11.3.2. События кнопок в стиле Flash 5
11.4. Режим элемента меню
11.5. Вид указателя мыши
11.6. Отключение кнопок
11.7. Управление кнопками при помощи клавиатуры
11.7.1. Динамическое наведение фокуса
11.7.2. Свойство _focusrect
11.7.3. События onSetFocus и onKillFocus
11.7.4. Задание маршрута клавиатурного обхода
11.7.5. Особенности клавиатурного обхода и программного фокуса в случае клипов
11.8. Клипы как кнопки
Проект 11: Факел

Глава 12. Работа с мышью и клавиатурой
12.1. Работа с мышью
12.1.1. Определение координат указателя мыши
12.1.2. События мыши
12.1.3. Скрытие указателя мыши
12.1.4. Правая клавиша мыши
12.1.5. Определение выхода указателя мыши за пределы окна плейера
12.2. Контекстное меню
12.2.1. Настройка контекстного меню. Класс ContextMenu
12.2.2. Введение в контекстное меню собственных команд
12.3. Работа с клавиатурой
12.3.1. Особенности событий клавиатуры
12.3.2. События onKeyDown и onKeyUp
12.3.3. Определение кода нажатой клавиши. Метод getCode()
12.3.4. Определение кода введенного символа. Метод getAscii()
12.3.5. Проверка нажатия клавиши. Метод isDown()
12.3.6. Проверка активности специальных режимов. Метод isToggled()
Проект 12: Эластики

Глава 13. Работа с текстом
13.1. Создание текстовых полей
13.1.1. Создание текстовых полей при помощи инструмента Text
13.1.2. Переменная поля
13.1.3. Динамическое создание текстовых полей
13.2. Удаление текстовых полей
13.3. Текстовые поля как визуальные объекты
13.4. Задание и извлечение текста поля
13.5. Настройка текстового поля
13.5.1. Управление размером поля
13.5.2. Рамка и задний фон
13.5.3. Поля однострочные и многострочные
13.5.4. Ограничение на количество символов
13.5.5. Поле паролей
13.5.6. Ограничение на вводимые символы
13.5.7. Выделение текста поля
13.6. Настройка стиля текста. Класс TextFormat
13.6.1. Задание гарнитуры
13.6.2. Размер шрифта
13.6.3. Цвет шрифта
13.6.4. Начертание шрифта
13.6.5. Выключка
13.6.6. Подчеркнутый шрифт
13.6.7. Гиперссылки
13.6.8. Форматирование текста
13.6.9. Определение размерных параметров текста
13.7. Работа со шрифтами
13.7.1. Шрифты системные и встроенные
13.7.2. Ненаправленные гарнитуры
13.7.3. Особенности встраивания шрифтов
13.7.4. Встраивание в фильм целого шрифта
13.7.5. Встраивание глифов отдельных символов и последовательностей символов
13.7.6. Проблема читабельности при отображении мелкого текста
13.8. Событие onChanged
13.9. Прокрутка текстовых полей
13.10. Работа с фокусом
13.11. Форматирование текста при помощи HTML
13.11.1. Тег .
13.11.2. Тег
13.11.3. .
13.11.4. Тег .
13.11.5. Тег .
13.11.6. Тег .
13.11.7. Тег .
13.11.8. Тег .
13.11.9. Тег
13.11.10. Тег .
13.11.11. Тег .
13.11.12. Тег
13.11.13. Автоматическое удаление пробелов. Свойство condenseWhite
13.12. Форматирование текста с использованием каскадных таблиц стиля (CSS)
13.12.1. Основные положения технологии CSS
13.12.2. Создание объекта таблиц стиля
13.12.3. Применение объекта стиля к текстовому полю
13.12.4. Элементы CSS, поддерживаемые Flash-плейером
13.13. Работа с выделением. Объект Selection
13.13.1. Управление фокусом поля. Методы getFocus() и setFocus()
13.13.2. Событие изменения фокуса (onSetFocus)
13.13.3. Определение границ выделения. Методы getBeginlndex() и getEndIndex()
13.13.4. Определение и задание положения курсора ввода
13.13.5. Динамическое задание выделения. Метод setSelection()
13.13.6. Динамическая замена выделенного текста. Метод replaceSel()
13.14. Работа со статичным текстом. Объект TextSnapshot
13.14.1. Создание объектов класса TextSnapshot
13.14.2. Считывание текста статичных полей
13.14.3. Поиск строки в статичном тексте
13.14.4. Программное выделение статичного текста
13.14.5. Определение ближайшего к точке символа статичного текста
13.15. Копирование текста в буфер обмена
13.16. Поддержка многоязычности. Панель Strings
Проект 13: Текстовые эффекты

Глава 14. Время и дата
14.1. Основные понятия теории измерения времени
14.2. Компьютерное время
14.3. Класс Date
14.3.1. Создание объектов класса Date
14.3.2. Методы класса Date
14.4. Определение времени, прошедшего с начала проигрывания фильма
Проект 14: Программные часы

Глава 15. Работа со звуком
15.1. Основные понятия теории цифрового звука
15.1.1. Частота дискретизации
15.1.2. Разрядность выборок
15.1.3. Количество каналов
15.1.4. Алгоритмы компрессии
15.1.5. Форматы хранения
15.2. Событийный (event) и потоковый (stream) звук
15.3. Операции со звуком без использования программирования
15.4. Создание объектов класса Sound
15.5. Динамическое присоединение звука. Метод attachSound()
15.6. Импортирование внешних МР3-файлов
15.6.1. Метод loadSound()
15.6.2. Отслеживание окончания загрузки. Событие onLoad
15.6.3. Создание предзагрузчиков для импортируемых звуков
15.7. Управление воспроизведением звуков
15.7.1. Запуск воспроизведения. Метод start()
15.7.2. Прекращение воспроизведения звуков. Метод stop() и функция stopAllSounds()
15.7.3. Событие onSoundComplete
15.8. Свойства position и duration
15.9. Управление параметрами воспроизведения
15.9.1. Громкость звука
15.9.2. Баланс
15.9.3. Детальное управление стереозвучанием. Метод setTransform()
15.10. Чтение ID3-тегов МР3-звуков
Проект 15: МР3-плейер

Глава 16. Взаимодействие с локальным окружением
16.1. Взаимодействие с импортированными фильмами
16.2. Взаимодействие с плейером
16.2.1. Определение версии и типа плейера
16.2.2. Режимы масштабирования
16.2.3. Типы выравнивания
16.2.4. Определение размеров фильма и величины окна плейера
16.2.5. Событие onResize
16.2.6. Цвет фона
16.2.7. Качество отображения
16.2.8. Панель небезопасных настроек плейера
16.3. Дополнительные возможности автономного плейера
16.3.1. Проекторы
16.3.2. Функция fscommandf()
16.4. Взаимодействие между фильмами, проигрываемыми разными плейерами
16.4.1. Создание кода отправки данных
16.4.2. Создание кода получения данных
16.4.3. Пример использования класса LocalConnection
16.5. Взаимодействие с браузером
16.5.1. Теги и
16.5.2. Передача данных из HTML-окружения при загрузке фильма
16.5.3. Решение проблемы кнопок навигации браузера
16.5.4. Передача команд браузеру. Функция getURL()
16.5.5. Взаимодействие с JavaScript при помощи функции fscommand()
16.5.6. Управление SWF-фильмом посредством JavaScript
16.5.7. Определение наличия в системе Flash-плейера нужной версии
16.6. Взаимодействие со средой разработки
16.6.1. Настройка панели Actions
16.6.2. Объект CustomActions
16.6.3. Взаимодействие с JSFL
16.7. Взаимодействие со средствами чтения с экрана
16.8. Получение информации об использующемся аппаратном и программном обеспечении
16.9. Сохранение данных на диске
16.9.1. Создание объектов SharedObject
16.9.2. Чтение данных из объектов SharedObject
16.9.3. Удаление sol-файлов
16.9.4. Серверные объекты SharedObject
16.9.5. Решение проблемы выделения цветом посещенных ссылок
16.10. Взаимодействие с принтером
16.10.1. Функции печати
16.10.2. Класс PrintJob
Проект 16: Создаем свой инструмент

Глава 17. Обмен текстовыми данными с сервером
17.1. Принципы сетевой безопасности Flash MX 2004
17.1.1. Правила определения идентичности доменов
17.1.2. Требование идентичности протоколов
17.1.3. Снятие ограничений на доступ к содержимому фильма
17.1.4. Снятие ограничений на доступ к внешним данным
17.1.5. Преодоление ограничений для сокетов
17.1.6. Создание приложений, отвечающих принципам безопасности
17.2. Загрузка текстовых данных с сервера
17.2.1. Создание файла сданными
17.2.2. Функция loadVariables()
17.2.3. Класс LoadVars
17.3. Взаимодействие с серверным скриптом
17.3.1. Запрос с выводом результата в браузере
17.3.2. Запрос с отправкой результата в фильм
17.3.3. Задание заголовков запроса
17.4. Работа с сокетами
17.4.1. Класс XMLSocket
17.4.2. Создание сокета-сервера
17.5. Работа с XML
17.5.1. Введение в ХМL
17.5.2. Объектная модель XML. DOM
17.5.3. Преобразование XML-текста в дерево объектов DOM
17.5.4. Обход дерева DOM
17.5.5. Создание и модификация XML-документа
17.5.6. Обмен XML-данными с сервером
Проект 17: Создаем сетевую игру
Дополнительные главы

Глава 18. Обмен с сервером сложными данными
Глава 19. Компоненты
Глава 20. Полезные мелочи

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование во Flash MX 2004 — Action Script 2.0 — Гурский Д. — fileskachat.com, быстрое и бесплатное скачивание.

Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу

Изучаем ActionScript 3. «Hello, world!»

Так уж принято, что первым приложением на любом языке программирования пишут, так называемый, «Hello, world!». Мы не будем отходить от традиций, хотя уже и написали такое приложение в качестве тестового примера в рамках статьи Разработка Flash-игр. Подготовка рабочего места. Но, на сей раз мы продвинемся немного дальше. Мы не просто напишем в окне заветные слова, но и рассмотрим вкратце работу с шрифтами и трансформацию объектов.

Примечание: Я сам только изучаю AS3, а потому лишь делюсь своими «открытиями», простыми словами.

Итак, понеслась…

Создаем новый проект совершенно аналогично тому, как было рассказано в выше упомянутой статье. Назовем новый проект «HelloWorld«.

Я специально использую слитное написание без пробелов и знаков препинания в названиях проектов затем, чтобы было проще публиковать готовые приложения в сети интернет, т.к. там пробелы и другие знаки в ссылках на объекты заменяются на их кодовые числа, например, пробел — это «%20» и т.п. Подобного рода абра-кадабра только мешает и может потребовать переименования файла при его размещении на сервере или другие действия. Я же привык делать сразу так, чтобы потом не суетиться.

Теперь решим, что мы будем отображать в окне. Я решил написать: «Hello, world! Это приложение разработано при помощи FlashDevelop«. Разбить эту реплику на несколько строк и каждую строку отформатировать задав ей собственный стиль начертания, цвет и шрифт.

Поскольку мы будем писать слова, то нам надо будет работать с объектами типа TextField.
К слову говоря, надо помнить о том, что во Flash-приложениях все, что необходимо отображать в окне — это объекты. А, следовательно, чтобы объекты отображались, должен быть примерно следующий порядок:

  • Объявление переменной объекта
  • Инициализация объекта (его создание)
  • Возможно взаимодействие с другими объектами при подготовке
  • Добавление объекта к stage

Кроме того, объекты могут добавляться к объектам образуя иерархию вида stage ->ParentObject ->ChildObject.
Таким образом к stage может быть добавлено, скажем, десяток родительских объектов, каждый из которых будет содержать различное количество дочерних объектов.

Ну это так, к слову, чтоб вы знали… А пока не будем на этом заморачиваться и двинем дальше.

В шаблоне приложения (файл main.as) в классе public class Main extends Sprite в самом его начале (т.е. до функции Main() ) напишем наши переменные текстовых полей:

И добавим переменную формата текста:

Переменные объявлены, можно переходить к созданию объектов.


Внутри функции private function init(. ) сразу после строчки removeEventListener(. ) начинаем писать наш код.

Создадим объект первого текстового поля:

Объект создан и теперь можно задать ему параметры, такие как: положение в окне, размер и, конечно же, текст:

После задания параметров можно отформатировать текст:

TextFormat на самом деле имеет гораздо больше вводных переменных, но можно использовать лишь те, которые должны отличаться от устанавливаемых значений по умолчанию. Так, в нашем случае мы установили шрифт Arial размером 20 пт., черным цветом и полужирным начертанием.

Чтобы было понятнее, расскажу кратенько о синтаксисе TextFormat:

tf = TextFormat( font, size, color, bold, italic, underline );

font — название шрифта, например: «Arial Black», «Times New Roman». Все их названия можно посмотреть в текстовом редакторе. Главное помнить, что не все шрифты из тех, что имеются у вас, окажутся у конечного пользователя. Чтобы не случилось того, что ваше приложение «косо» отобразиться на девайсах ваших друзей, когда надумаете похвастаться созданным вами шедевром, советую посмотреть такую вот таблицу шрифтов: Список стандартных шрифтов Windows. Если же задумаетесь о качественном совмещение с другими ОС — google с соответствующим запросом вам в помощь.

size — размер шрифта в пунктах.

color — цвет шрифта в формате 0xRRGGBB, где RR — шестнадцатеричное значение красного, GG — зеленого и BB — синего. Мне уже привычно… А чтобы вам не париться — сюда: https://getcolor.ru/. Получите схему любого цвета. И все, что нужно будет, это заменить знак «#» на «0x«.

bold — полужирное начертание (true). По умолчанию false — обычное.

italic — курсив (наклон) (true). По умолчанию false — без наклона.

underline — подчеркивание (true). По умолчанию false — обычное.

Это не весь список передаваемых значений, которые имеются в структуре TextFormat. Я перечислил лишь самые нужные, они-то как раз и выведены вперед списка. Отсортированы переменные в порядке релевантности по частоте использования, и те из них, которые не требуется изменять, можно опускать.

Например, если нам необходимо указать только имя шрифта и размер, то остальные значения можно не указывать:

Но! Если вам нет нужды менять другие параметры, но при этом сделать шрифт подчеркнутым, то придется пройти по всем значениям, указывая каждый из них. Либо можно так:

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

Теперь нам осталось применить текстовый формат к текстовому полю и добавить текстовое поле к stage, чтобы оно стало видимым:

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

Отлично! Теперь, если вы запустите приложение (F5), то увидите результаты трудов:

И так, работу с текстовыми полями и текстовыми форматами мы рассмотрели. Переходим к трансформациям…

Трансформации в AS3 представлены довольно широко. Оно и понятно… Годами отточено.

Всего разом не рассмотришь, а потому поговорим лишь о той трансформации, которая нам нужна в данной статье — это rotation (повороты).

Данная трансформация имеет в постфиксе имени букву оси, относительно (вокруг) которой будет происходить вращение. Т.е. их три:

  • rotationX
  • rotationY
  • rotationZ

Нам нужен первый из них.

Все углы считаются в градусах. Поставим предварительные значения для наших текстовых полей:

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

А сейчас снова вернемся к «видимости» полей…

Все поля добавлены к stage, а, следовательно, все они отображаются. Но нам нужно, чтобы «перевертыши» не показывались до тех пор, пока не будут повернуты «лицом».

В AS3 за видимость отвечает переменная visible. Если ее значение равно true, то объект видимый, а если false, то невидимый.

Сделаем все наши поля кроме первого (оно уже правильно ориентировано) изначально невидимыми:

Прекрасно. Сцена подготовлена. Теперь нам необходимо ее «оживить». Для этого нам необходимо добавить слушатель смены кадров:

Этот слушатель работает очень просто: каждый раз, когда готовится смена кадра ENTER_FRAME, будет вызываться наша функция, которую мы назвали MyRender.

Напишем эту функцию следом за функцией init().

Каждый кадр будем поворачивать текстовые поля с шагом 5 градусов до тех пор, пока они не повернутся полностью, т.е. до 0 градусов:

И позаботимся о том, чтобы в момент, когда текстовое поле повернуто на 90 градусов, оно становилось видимым:

Отлично. Мы всё сделали. Можно жать F5 и наслаждаться результатом.

Последнее, чем можно побаловаться, это «подогнать» приложение под требуемые параметры. Зайдем в свойства проекта Project->Properties:

Пройдя по указанному меню откроется окно свойств проекта:

Здесь нам понадобятся поля группы General:

Dimensions — оригинальные размеры окна. Дело в том, что на веб страницах приложение может быть масштабировано, НО! Пропорциональность масштабирования будет зависеть именно от указанных значений данного поля. Указывается в пикселях (точках).

Background color — цвет фона. Без комментариев…

Framerate — Частота смены кадра. Именно от этого значения зависят: а) плавность анимации; и б) нагрузка на систему и, как следствие, тормоза на слабых ПК. Я бы не советовал ставить значение более 30. И вообще, считаю, что 15 в подавляющем большинстве случаев более чем достаточно.


Готовый пример можно посмотреть здесь. Там же есть ссылка на загрузку исходников примера.

Раздел: Компьютерная документация -> Интернет технологии -> Flash

Macromedia Flash 8. Управление объектами на сцене при помощи ActionScript

Знаете ли вы, что на горе Кения, которая находится в тропической Африке, смена поры года наступает каждые сутки? Днем на вершине потухшего вулкана царит лето, а ночью земля покрывается льдом. Невероятно, но это факт! Дело в том, что флора вершины Кении очень чувствительна к тропическому солнцу, которое греет только днем. Ночью же температура падает до нуля и ниже. Если бы я не видел этого своими глазами (документальный фильм BBC), я бы точно не поверил!

Но сейчас вам предстоит покорить другую вершину, которая расположена на материке Macromedia Flash 8 Professional и называется “Управление объектами посредством сценариев”. С помощью встроенного языка программирования ActionScript можно обратиться почти к каждому элементу Flash- документа и определить программным путем его реакцию на любые события: загрузка клипа в память, нажатие клавиши на клавиатуре и т.д. Эти возможности Flash с большим успехом используются при написании компьютерных игр и создании многофункциональных интерактивных приложений, главная роль в которых отводится пользователю. И именно эти возможности Flash 8 (и более ранних версий) на протяжении данной статьи станут для вас притчей во языцех.

О Flash: назначение, особенности

Какой современный юзверь не знает “Масяню”, “Магазинчик Бо”, “Ежи и Петруччо”! Так вот, все эти мультики созданы средствами Flash. Вы когда- нибудь посылали пингвина прямо в «десятку» в YetiSports? Так вот, эта игрушка и многие другие тоже созданы средствами Flash. Вы заходили на сайт Disturbed? Здорово, правда? Так вот, эта и многие другие интернет-странички тоже созданы средствами Flash. Так что же такое Flash? Ответ: Flash — это технология, позволяющая создавать высококачественные мультимедийные интерактивные приложения, которые могут быль использованы в любых областях. Хотите рисовать такие же мультики, игры и сайты? Тогда обзаведитесь Macromedia Flash 8 Professional и как минимум дочитайте эту статью до конца:).

Основными особенностями Macromedia Flash являются:
. Работа с векторной графикой и поддержка растровой.
. Временная шкала, используемая для создания мультипликации.
. Возможность оптимизации готовых роликов.
. Мощный язык сценариев ActionScript.
. Множество компонентов GUI.
. Большой набор средств рисования и публикации.
. Поддержка различных платформ (IBM PC, Macintosh, мобильные устройства) и др.

Каждый графический элемент, расположенный на сцене Flash, называется объектом. Это может быть простейшая геометрическая фигура или целый Flash-ролик. Объекты, находящиеся в библиотеке каждого проекта Flash (Window -> Library), называются символами (Symbols). Любой объект можно превратить в символ командой Modify -> Convert To Symbol. Если объект перетащить из библиотеки символов на монтажный стол (используя Drag & Drop), то он превратится в экземпляр символа (Instance). Экземпляр отличается от символа тем, что любое его изменение не отражается на соответствующем ему символе, а редактирование символа сказывается на всех порожденных экземплярах. Типы символов во Flash приведены в таблице 1.

Таблица 1. Типы символов и их характеристика

Тип

Характеристика

Graphic

Любое статическое изображение

Button

Мультик, имеющий только 4 кадра (состояния кнопки)

Movie

Анимация, занимающая несколько кадров

Что ж, можно считать, знакомство с Macromedia Flash состоялось. Теперь попробуем программу в действии.

На повестке дня

Сегодня я предлагаю читателю поучаствовать в рисовании и оживлении двояковыпуклой линзы, посредством которой можно рассмотреть мелко набранный текст. Увеличительное стекло должно перемещаться как при помощи мышки, так и при помощи клавиатуры. Действия, которые будут проделаны и описаны, просты и легко повторяются, а их результат может даже пригодиться (идея была мною позаимствована из книги по Flash). Кроме того, вы познакомитесь с принципами управления несколькими взаимосвязанными предметами и анимированными масками. Кто сказал, что маски — это suxx? Вы говорите, ересь. Сжечь их на костре! Маски — это палочка-выручалочка каждого Flash-мейкера. Итак, за дело (не бойтесь — про костер я пошутил:))!

Планирование действий, или ликбез

Эффект линзы реализуется следующим образом. На исходный текст (можно взять картинку или любой другой объект) накладывается маска, обеспечивающая его видимость везде, кроме круглой области в центре. Затем на маске располагают тот же, только увеличенный (Modify -> Transform -> Scale), текстовый блок, а поверх него — вторую маску, которая просвечивает его в той области, в которой недоступен исходный текст. Теперь остается нарисовать лупу и разместить ее так, чтобы отверстие в первой маске, стекло линзы, а также просмотровое окно второй маски совпали. Если картинка статическая (лупа неподвижна), то маски должны располагаться на маскирующих слоях. Если же лупа передвигается, то, чтобы эффект увеличительного стекла не исчез, вслед за ней необходимо перемещать маски. Для изменения расположения объекта с помощью сценария ему нужно назначить имя на панели Properties в поле Name, а затем обратиться к нему по имени в ActionScript, как в любом объектноориентированном языке программирования с точечной нотацией (Delphi, VBA, С/С++), и изменить необходимые свойства — в нашем случае координаты. Так во Flash можно поступать только с кнопками и клипами — объектами типа Button и MovieClip. Однако клипы, размещенные на маскирующем слое, не создают маску. В этом случае используют обычные геометрические фигуры. Но в сценарии обратиться к ним невозможно, потому что их нельзя поименовать. Поэтому с анимированными масками работают иначе, чем с маскирующими слоями: объект-маска размещается на обычном слое, а на панели Actions для нее указывается инструкция вида ““Имя маски”.setMask (“Имя объекта, на который накладывается маска”);”. Для реализации идеи увеличительного стекла вам потребуется 5 слоев в первом кадре временной шкалы (рис.1).

Будет проще, если каждый предмет — исходный текст, первую маску, увеличенный текст, вторую маску и линзу — расположить на отдельном слое. Для наглядности присвоим слоям имена, характеризующие расположенные на них предметы. Самым первым, т.е. нижним, пусть будет Normal Text, затем — Mask 1, следом за ним — Scaled Text, потом — Mask 2 и, наконец, Zoom. Осталось нарисовать действующие лица нашей пьесы и продумать мизансцену. Теперь, когда предельно ясна как сама цель, так и способ ее достижения, можно попробовать воплотить ее в жизнь.

Работа с масками, или как сделать линзу

С помощью инструмента Text разместите на нижнем слое надпись и превратите ее в объект типа MovieClip с помощью команды Modify -> Convert To Object. Теперь введите его имя на закладке Properties (Ctrl+F3). Пусть будет norm_text (рис.2). Это нам необходимо для привязки к тексту первой маски. Теперь нужно создать саму маску. Для этого в меню Insert выберите New Symbol и в свойствах создаваемой маски укажите тип MovieClip и название Mask 1. В открывшемся окне редактирования нового символа нарисуйте большой черный прямоугольник, а в его середине — белый круг радиусом 60, который затем необходимо удалить. При тестировании ролика (Ctrl + Enter) в этом месте текста видно не будет. Это как раз то, что нужно. Следите за тем, чтобы окружность встала ровно по центру рабочей области — там, где нарисован маленький крестик. Это впоследствии избавит вас от лишней головной боли. Когда маска готова, закройте редактор символов и из библиотеки символов (Ctrl + L) перетащите на второй слой монтажного стола экземпляр только что созданного символа.

Затем назначьте ему имя mask_1, перейдите в редактор сценариев (Window -> Actions или F9) и запишите “mask_1.setMask (norm_text)”. Теперь объект с именем mask_1 маскирует текст norm_text. Теперь откройте библиотеку, найдите символ исходного текста, перетащите его на слой Scaled Text и измените размер. В свойствах не забудьте дать имя объекту — scal_text. Вторая маска должна работать с точностью до наоборот, поэтому ее просмотровым окном будет не прямоугольник без круга в середине, а сам круг радиусом 60. Когда вы ее нарисовали и переместили экземпляр на рабочий стол, присвойте ей имя mask_2 и в редакторе сценариев запишите скрипт mask_2.setMask (scal_text). На рис. 3 показаны действия первой и обеих масок.

Рисуем оправу к линзе

С помощью наложения двух масок было получено увеличительное стекло. Теперь самое время заняться лупой. Для этого в меню Insert выберите New Symbol и опять задайте тип MovieClip. В моем случае лупа состоит из трех частей: ручки, оправы и ее верхнего слоя. Ручка нарисована инструментом Line и залита градиентом, наложение которого можно отрегулировать Gradient Transform Tool’ом. Оправа и ее верхний блестящий слой — полые (т.е. без заливки) окружности. Заливку в этом случае нужно отключить, чтобы через отверстие в лупе можно было видеть нижние слои, которые вместе образуют увеличительную линзу. Первое кольцо оправы имеет внешний радиус 65, внутренний радиус 55 и толщину 10, второе — 66, 64 и 2. Имейте в виду, что на панели Properties указываются средние размеры, т.е. без учета толщины линии. Поэтому придется самостоятельно рассчитывать границы объектов при “подгонке” частей лупы. Готовую лупу, вернее, ее кольца, также необходимо расположить ровно по центру окна редактора символов — иначе не оберешься проблем. Но об этом в следующем разделе.

I like to move it, move it…

Теперь осталось самое интересное — заставить лупу перемещаться вслед за курсором мыши. Итак, из библиотеки символов перенесите на монтажный стол на слой Zoom экземпляр уже созданной лупы и дайте ей название (рис.4). Я решил не мудрить и записал просто “zoom_1”. Теперь выделите лупу, откройте редактор сценариев (F9) и наберите следующий код:

onClipEvent(mouseMove) <
_root.zoom_1._x = _root._xmouse;
_root.zoom_1._y = _root._ymouse;
_root.mask_1._x = _root._xmouse;
_root.mask_1._y = _root._ymouse;
_root.mask_2._x = _root._xmouse;
_root.mask_2._y = _root._ymouse;
>

Это обработчик события mouseMove, т.е. перемещения указателя мыши, для объекта zoom_1. ОnClipEvent(“Событие”) — стандартная функция обработки событий для клипов. Ключевое слово _root указывает на то, что объекты zoom_1, mask_1 и mask_2 находятся в основном клипе, а свойства _xmouse и _ymouse позволяют узнать текущие координаты курсора мыши. Дальше все понятно: лупу и обе маски передвигаем в точку (_xmouse, _ymouse), т.е. привязываем к мышке. Теперь при малейшем изменении положения указателя лупа будет следовать за ним. Помните, я вам несколько раз советовал располагать создаваемые символы ровно по центру поля редактора? Теперь самое время это пояснить. Видите ли, в противном случае при задании одних и тех же координат для объектов zoom_1, mask_1 и mask_2, т.е. _xmouse и _ymouse, лупа и маски просто бы разбегались кто куда. Если объекты перемещаются посредством клавиатуры, то это замечание неактуально. В этом случае для zoom_1 нужно написать следующий сценарий:

onClipEvent (enterFrame) <
Speed = 10;
if (Key.isDown (Key.RIGHT)) <
this._x += Speed;
_root.mask_1._x += Speed;
_root.mask_2._x += Speed;
> else if (Key.isDown (Key.UP)) <
this._y -= Speed;
_root.mask_1._y -= Speed;
_root.mask_2._y -= Speed;
> else if (Key.isDown (Key.DOWN)) <
this._y += Speed;
_root.mask_1._y += Speed;
_root.mask_2._y += Speed;
> else if (Key.isDown (Key.LEFT)) <
this._x -= Speed;
_root.mask_1._x -= Speed;
_root.mask_2._x -= Speed;
>
>

Это обработчик события enterFrame для лупы, которое возникает при загрузке каждого нового кадра клипа. Объявленная переменная Speed определяет скорость перемещения указателя мыши, а вернее, приращение координат при нажатии на клавиши управления курсора. Для определения активированной клавиши используется метод isDown общего объекта Key. Функция isDown возвращает истину, если была нажата указанная в ее параметрах кнопка. Таким образом, если пользователь хочет переместить лупу вверх и давит клавишу “вверх”, то сработает инструкция “if (Key.isDown (Key.UP))…”, если влево — то “if (Key.isDown (Key.LEFT))…” и т.д. Теперь остается изменить координаты лупы и масок для каждого случая. Если лупе приказали ползти вверх, тогда ясно, что нужно уменьшить ординату объектов zoom_1, mask_1 и mask_2 на величину Speed. Это делается при помощи оператора “-=”, ну, а синтаксис вы видите в листинге. Ту же самую команду можно записать как “_root.mask_1._y = _root.mask_1._y — Speed”(классический вариант). И так, и так правильно (программисты, пишущие на С/С++, ехидно посматривают на недоумевающих паскалистов). Обработчик нажатия остальных трех клавиш записывается аналогично.

Когда сценарий привязан к конкретному объекту, то при обращении к нему для экономии места указывают не полный путь, а ключевое слово “this”. Поскольку данный сценарий закреплен за лупой (объектом с именем “zoom_1”), громоздкую запись “_root.zoom_1._x” можно заменить на ”this._x”. Обращаю ваше внимание на использование прописных букв в зарезервированных словах ActionScript — например, enterFrame, Key.isDown и других. Это не прихоть автора, а особенность синтаксиса языка. Эти и другие слова нужно записывать именно так, и никак иначе. Если вы допустили ошибку в ключевом слове, то оно сразу изменит свой цвет с синего на черный, а компилятор попросит определить неизвестную переменную. Теперь можете откинуться на спинку кресла, выпить чашечку любимого кофе и с неподдельным восхищением посмотреть на результат ваших трудов.

И еще несколько слов

Посредством сценария можно не только перемещать объекты, но и изменять любые из их свойств. Хотите, чтобы лупа вдруг стала полупрозрачной? Нет проблем! Напишите обработчик события загрузки ролика, т.е. “onClipEvent (load)”, содержащий команду “this._alpha = 50;” или “setProperty (this, _alpha, 50)”. Увеличенный текстовый блок совсем не обязательно мастерить самостоятельно. Для изменения размеров в полтора раза достаточно записать код:

onClipEvent (load) <
this._w >this._height += this._height/2;
>

Можно даже предусмотреть возможность ввода оптической силы линзы, скорости перемещения лупы и т.д. Клипы также могут использоваться в качестве кнопок (объектов типа Button) и реагировать на нажатие и, извольте, отжатие клавиш мыши. В этом случае функцией для обработки событий выступает не “onClipEvent (“Событие”)”, а “on (“Событие”)”. Список событий, обрабатываемых каждой функцией см. в таблице 2. Если скриптов для объектов накопилось очень много, то можно смело пользоваться их браузером на левой панели страницы Actions (рис.5).

Таблица 2. События, на которые могут реагировать клипы и кнопки

События для клипов

Событие

Характеристика

load

Наступает при загрузке клипа в память

unload

То же самое, только при выгрузке

mouseDown

Возникает при нажатии левой кнопки мыши

mouseUp

Возникает после того, как левая кнопка отжата

mouseMove

Возникает при перемещении указателя мыши

enterFrame

Наступает при переходе в новый кадр клипа

keyDown

При нажатии клавиши на клавиатуре

keyUp

Наоборот, при отпускании клавиши

Общие события для клипов и кнопок

Событие

Характеристика

press

Происходит при нажатии кнопки мыши

release

Наступает, когда кнопка мыши отпускается

rollOver

Указатель мыши наводится на объект

rollOut

Указатель мыши покидает пределы объекта

Кроме того, во Flash никто не запрещает создавать объекты динамически и размещать их на нужных слоях, а также создавать анимацию полностью программным путем. Управлять можно не только поведением предметов, но и последовательностью проигрывания клипов, если Flash-документ состоит из нескольких роликов. Но об этом, даст Бог, еще поговорим.

В первую очередь хотелось бы отметить явные преимущества векторной графики во Flash по сравнению с растровой, которые проявляются в следующих аспектах: маленький размер изображения и высокое качество картинок, нарисованных за сравнительно небольшой период времени. Действительно, весь ролик с лупой занимает всего 5 Kb (мне было лень проводить оптимизацию) в формате SWF. Отсюда напрашивается вывод, что, если разрабатывать быстрый (в смысле, быстро грузится) и красивый сайт, то лучше это делать полностью во Flash и, если необходимо, то с минимальным количеством bitmap-текстур и пр. Развитый инструментарий Flash и большие возможности управления содержимым роликов позволяют это сделать. Что касается таких частей web-страниц, как форумы, то их можно смастерить на своем движке отдельно от сайта. Единственная загвоздка — Flash Player необходимой версии, который установлен далеко не на всех машинах. Я думаю, вы уже ощутили, насколько просто во Flash создается рисунок и насколько удобны инструменты, предназначенные для этого. Вспомним хотя бы то, как была нарисована лупа. Кажется, что разработчики старались все сделать так, чтобы пользователь за несколько минут мог получить классное изображение или мультфильм. То же справедливо и для других пакетов Macromedia, например, Freehand. Там вроде такой же набор инструментов. Из растровых графических редакторов ауру Flash точнее всего может передать PaintShop Pro. Если говорить об ActionScript 2.0 и управлении объектами посредством сценария, то перед нами, без сомнения, мощный объектноориентированный язык программирования, который сконструирован так, чтобы быть интуитивно понятным и одновременно позволять вытворять различные нешуточные вещи. В частности, мне кажется, что создавать и располагать объекты динамическим путем в ActionScript легче, чем, например, в Delphi. Если бы ActionScript умел работать с множествами, я бы делал во Flash свой курсовой проект:).

На сайте КГ вместе с данной статьей вы можете найти два SWF-ролика с лупой, управляемой мышкой и клавиатурой, а также исходники. Конечно, они почти одинаковые и отличаются лишь сценарием для лупы. Я считаю, что они вам пригодятся — сам учился на таких примерах и знаю, что пользы от них может быть больше, чем от всей статьи. Если вас посетят безумные идеи, можете смело воспользоваться моими роликами, только не забудьте сообщить мне о том, что у вас получилось. Мне, знаете, тоже интересно:). Вот и все. Благодарю за внимание:).

1. Дунаев В.В. Самоучитель Flash MX 2004. — СПб.: Питер, 2005. -368 с.
2. Справочная система Macromedia Flash 8.

Рисование на ActionScript во Flash MX

Когда-то, довольно давно, в посте «Динамическое рисование», я уже описывал стандартные методы динамического рисования векторной графики (так обычно называют создание визуальных объектов одним только кодом) в языке ActionScript 2.0. Сегодня же поговорим о динамическом рисовании в ActionScript 3.0.

И в AS 2.0, и в AS 3.0 эти методы имеют много общего. Но имеется и ряд существенных отличий:

— в ActionScript 3.0 расширен набор методов динамического рисования и больше нет надобности в написании собственных функций или использовании пользовательских классов и библиотек при отрисовке кодом геометрических примитивов (в ActionScript 2.0 даже для создания таких примитивов, как круг и прямоугольник, приходилось или писать свою функцию, или прибегать к таким сторонним решениям, как класс Graphics);

— в ActionScript 3.0 можно рисовать кодом не только внутри MovieClip-ов (что, скорее всего, нерационально и является напрасной тратой ресурсов), но и внутри ещё ряда объектов списка отображения (обычно, контейнером для динамически создаваемой графики в этом языке являются Sprite или Shape);

— в ActionScript 3.0 методы динамического рисования относятся к классу Graphics и для обращения к ним используется свойство graphics у объектов MovieClip, Sprite и Shape.

Теперь давайте перечислим основные (но далеко не все!) методы динамического рисования, имеющиеся в арсенале языка ActionScript 3.0:

1.) метод beginFill() устанавливает одноцветную заливку. Имеет параметры:


— прозрачность заливки (в диапазоне от 0 до 1).

Для примера нарисуем квадрат с полупрозрачной (0.5) чёрной (0x000000) заливкой.

Код ActionScript 3.0:

var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(0x000000,0.5); mc.graphics.drawRect(50,50,100,100); mc.graphics.endFill(); addChild(mc);

Если нам надо сменить цвет заливки, то мы можем поступить так:

Код ActionScript 3.0:

var mc:MovieClip = new MovieClip(); /* рисуем чёрный прямоугольник */ mc.graphics.beginFill(0x000000,1); mc.graphics.drawRect(50,50,100,100); mc.graphics.endFill(); /* рисуем красный прямоугольник */ mc.graphics.beginFill(0xff0000,1); mc.graphics.drawRect(150,150,100,100); mc.graphics.endFill(); /* добавляем мувик на сцену флеш-ролика */ addChild(mc);

Или воспользоваться чуть меньшим количеством строк кода:

Код ActionScript 3.0:

var mc:MovieClip = new MovieClip(); /* рисуем чёрный прямоугольник */ mc.graphics.beginFill(0x000000,1); mc.graphics.drawRect(50,50,100,100); /* рисуем красный прямоугольник */ mc.graphics.beginFill(0xff0000,1); mc.graphics.drawRect(150,150,100,100); /* добавляем мувик на сцену флеш-ролика */ addChild(mc);

2.) метод endFill() — применяет установленную ранее заливку. Параметров не имеет.

3.) метод lineStyle() — задаёт стиль линии, которая будет использоваться в дальнейшем рисовании. Имеет следующие основные (!) параметры:

— толщина линии (это целое число в диапазоне от 0 до 255);

— прозрачность линии (в диапазоне от 0 до 1).

Для примера нарисуем непрозрачную (1) красную (0xff0000) линию толщиной 5px.

Код ActionScript 3.0:

var sprite:Sprite = new Sprite(); sprite.graphics.lineStyle(5,0xff0000,1); sprite.graphics.moveTo(50,50); sprite.graphics.lineTo(250,250); addChild(sprite);

Если во время рисования надо сменить стиль линии, то делается это примерно так:

Код ActionScript 3.0:

var sprite:Sprite = new Sprite(); /* рисуем красную линию */ sprite.graphics.lineStyle(1,0×000000,1); sprite.graphics.moveTo(50,50); sprite.graphics.lineTo(250,250); /* рисуем чёрную линию */ sprite.graphics.lineStyle(10,0xff0000,1); sprite.graphics.moveTo(50,100); sprite.graphics.lineTo(250,350); /* добавляем на сцену */ addChild(sprite);

4.) метод moveTo() — устанавливает точку начала рисования. Имеет два параметра:

— положение точки по оси x;

— положение точки по оси y.

И тут стоит напомнить о системе координат в флеш-роликах:

Как видите, точка начала координат расположена в верхнем левом углу флеш-ролика. Не забывайте про это при работе с Flash.

5.) метод lineTo() — устанавливает конечную точку прямой. Имеет два параметра:

— положение точки по оси x;

— положение точки по оси y.

Для примера нарисуем чёрную линию толщиной 1px из точки с координатами (100,100) в точку с координатами (450,200).

Код ActionScript 3.0:

var sprite:Sprite = new Sprite(); sprite.graphics.lineStyle(1,0×000000,1); sprite.graphics.moveTo(100,100); sprite.graphics.lineTo(450,200); addChild(sprite);

Если вы рисуете какую-то ломанную линию, то каждый раз указывать начальную точку рисования с помощью метода moveTo() нет необходимости. Дело в том, что в качестве начальной точки для рисования линии автоматически будет браться точка из предыдущего метода lineTo(). Вот пример.

Код ActionScript 3.0:

var sprite:Sprite = new Sprite(); sprite.graphics.lineStyle(1,0×000000,1); sprite.graphics.moveTo(100,100); sprite.graphics.lineTo(300,200); sprite.graphics.lineTo(200,100); sprite.graphics.lineTo(450,200); addChild(sprite);

6.) метод curveTo() — этот метод используется для рисования кривых. Про рисование кривых в ActionScript я уже подробно писал в посте «Динамическое рисование кривых в ActionScript».

7.) метод drawCircle() — это метод для рисование окружностей. Имеет три параметра:

— положение центра окружности по оси x;

— положение центра окружности по оси y;

Для примера нарисуем окружность с координатами (200,200) и радиусом 100px.

Код ActionScript 3.0:

var shape:Shape = new Shape(); shape.graphics.beginFill(0x000000,1); shape.graphics.lineStyle(1,0×000000,1); shape.graphics.drawCircle(200,200,100); shape.graphics.endFill(); addChild(shape);

8.) метод drawEllipse() — этот метод рисует эллипс и работает иначе, чем предыдущий метод для рисования окружности. Имеет 4 параметра:

— координаты верхнего левого «угла» эллипса по оси x;

— координаты верхнего левого «угла» эллипса по оси y;


Для примера нарисуем эллипс, размером 550 на 400 и координатами (0,0).

Код ActionScript 3.0:

var shape:Shape = new Shape(); shape.graphics.beginFill(0x000000,1); shape.graphics.drawEllipse(0,0,550,400); shape.graphics.endFill(); addChild(shape);

9.) метод drawRect() — этот метод используется для отрисовки прямоугольников. Порядок и набор параметров у этого метода точно такой же, как и у ранее рассмотренного метода drawEllipse(). Пример прилагается.

Код ActionScript 3.0:

var shape:Shape = new Shape(); shape.graphics.lineStyle(1,0xff0000,1); shape.graphics.beginFill(0x000000,1); shape.graphics.drawRect(50,50,450,300); shape.graphics.endFill(); addChild(shape);

10.) метод drawRoundRect() — используется для рисования прямоугольников с закруглёнными углами. Имеет шесть параметров, из которых первые четыре аналогичны тем, которые используются в методах drawEllipse() и drawRect(). А два последних параметра метода drawRoundRect() отвечают за округление углов.

Код ActionScript 3.0:

var shape:Shape = new Shape(); shape.graphics.lineStyle(1,0xff0000,1); shape.graphics.beginFill(0x000000,1); shape.graphics.drawRoundRect(50,50,450,300,30,30); shape.graphics.endFill(); addChild(shape);

11.) метод clear() — стирает ранее нарисованную векторную графику. Смотрите пример.

Код ActionScript 3.0:

var shape:Shape = new Shape(); /* рисуем чёрный прямоугольник */ shape.graphics.beginFill(0x000000,1); shape.graphics.drawRect(50,50,450,300); shape.graphics.endFill(); /* стираем ранее нарисованное */ shape.graphics.clear(); /* рисуем красный круг */ shape.graphics.beginFill(0xff0000,1); shape.graphics.drawCircle(275,200,100); shape.graphics.endFill(); /* добавляем на сцену флеш-ролика */ addChild(shape);

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

Здесь я перечислил и описал только основные и часто используемые методы динамического рисования в ActionScript 3.0. На самом деле методов программного рисования в этом языке больше и их количество, скорее всего, будет со временем только расти. Но многие из этих методов довольно сложны и описать их работы в рамках одного поста сложно. Впрочем, я ещё не раз вернусь к теме динамического рисования. А на этом пока всё 🙂

Рисование на ActionScript во Flash MX

Прошлая статья была посвящена анимации. Мы создавали анимацию на основе motion tweening, shape tweening и просто составляли движение из отдельных кадров. Думаю, пора перейти к более сложной теме — рассмотрению инструмента, который создает основу для большинства качественных Flash-фильмов.

Этот инструмент — ActionScript: событийно-управляемый язык, встроенный во Flash. Последняя версия ActionScript, которая присутствует во Flash 5, существенно отличается от предыдущей. Если в прошлой версии это был ограниченный набор команд, позволяющий осуществлять лишь основные действия и вводимый с помощью не очень удобного интерфейса, то новый ActionScript — это мощный язык с увеличенным набором команд, поддержкой классов, наследования (!) и гораздо более удобным интерфейсом.

ActionScript делает ваши страницы интерактивными. Вы можете реагировать на события с мышки или с клавиатуры, можете выполнить какие-либо действия при проигрывании определенного кадра.

Для того чтобы овладеть ActionScript в полной мере, желательно уже иметь опыт программирования (предпочтительно на С++, JavaScript, etc.). Однако одним из достоинств языка Flash является то, что вам не нужно быть профессионалом во Flash, или полностью знать ActionScript, чтобы писать на нем качественный код. Вы можете использовать лишь те возможности языка, которые сочтете необходимыми для своей работы.

Так как эта статья посвящена основам языка, в ней мы рассмотрим:

  • Панель действий (Actions panel), на которой происходит практически все общение с ActionScript.
  • Кнопки — как их заставлять работать так, как нам требуется.
  • Пути — как обращаться к нужным объектам?
  • Основные действия с Flash-мультиками (movie clips) — мы будем управлять процессом проигрывания фильма, как нам угодно.
  • Отладку в ActionScript — окошки Output и Debugger.

Цель этой статьи — дать вам возможность почувствовать ActionScript и показать, что этот язык может служить как для создания весьма внушительных программ, так и для выполнения элементарных действий, которые сделают вашу страницу гораздо привлекательней.

Термины

Прежде чем мы перейдем к конкретным действиям, несколько терминов из области ActionScript:

  • Действия (Actions) — это инструкции, которые говорят Flash-мультику, что делать. От них произошло название языка — ActionScript (дословно — сценарий действий). Давайте договоримся, что в рамках этой статьи мы будем использовать термин «инструкция», дабы не путать их с настоящими действиями, которые будем производить.
  • События (Events) — это действия, которые происходят, когда проигрывается мультик. События, например, могут происходить, когда заканчивается загрузка какого-то кадра, когда мы достигаем какого-то кадра, когда пользователь нажимает клавишу на клавиатуре или курсор мышки оказывается над нашим объектом.
  • Выражения (Expressions) — это любая часть инструкции, которая порождает значение. Следующие примеры являются выражениями: 2 + 2, 2 * 2, a + b, 2*pi*r, (15 + k) * random(10).
  • Функции (Functions) — это блоки кода, которые можно многократно использовать. Функциям можно передавать значения и получать от них результат. Например, number = get_color(15, 24). 15 и 24 являются аргументами (или параметрами) функции get_color, возвращаемое значение которой записывается в переменную number.
  • Классы ( >Эти термины мы будем использовать при обсуждении ActionScript. Итак.

Панель действий (Actions Panel)

Панель действий служит для отображения и ввода ActionScript-программ (рис. 1). Существует два режима работы с панелью — нормальный (для «чайников») и экспертный. В экспертном режиме список команд — это простое поле для ввода текста. В нормальном же режиме мы не можем напрямую редактировать команды. Для этого используется панель параметров.

Добавить инструкцию можно, нажав на кнопку «+» (см. рис. 1) или выбрав соответствующую инструкцию в списке элементов языка. Кроме того, для всех действий во Flash имеются последовательности клавиш, с помощью которых это можно сделать гораздо быстрее. Они приведены справа от каждого действия в меню кнопки «+». Например, чтобы добавить функцию stop(), нужно нажать Esc+st (последовательно: Esc, затем «s», затем «t»).

Удалить инструкцию можно, выбрав ее и нажав кнопку «-» (или просто клавишу Delete).

Я рекомендую вам не начинать сразу же пользоваться экспертным режимом, если у вас нет опыта программирования на Java-подобных языках (С++, Java, JavaScript). У нормального режима есть большое достоинство, делающее его незаменимым для новичков — в этом случае гораздо меньше шансов ошибиться с синтаксисом языка. Новичкам это поможет быстрее понять тонкости ActionScript.

Рис. 1 — Панель действий

В панели действий отображаются действия объекта либо кадра, выбранного в данный момент.

Кнопки

Первое, что хочется, когда начинаешь изучать интерактивность Flash — сделать что-нибудь, что бы откликалось на действия пользователя, «оживить» ваше творение, добавить обратную связь. Самый простой способ сделать это — кнопки. Поэтому с них-то мы и начнем.

Как вы знаете, во Flash существует специальный тип символа для создания кнопок — Button (см. Macromedia Flash ч. 2). Будем считать, что вы уже научились создавать кнопки, теперь научимся отслеживать нажатия на эти кнопки.

Кнопки в Macromedia Flash обладают обширным списком событий, на которые мы можем реагировать:

  • press — клавиша мышки нажата, когда курсор находится в пределах кнопки;
  • release — клавиша мышки отжата, когда курсор находится в пределах кнопки;
  • releaseOuts >К сожалению, Flash "понимает" только левую клавишу мыши. Правая используется для вызова контекстного меню (щелкните правой клавишей на каком-нибудь Flash мультике). Способов отлавливать во Flash среднюю клавишу или "колесико" (mouse wheel) я пока не встречал; думаю, что их не существует.

Перехватываются эти события с помощью директивы on(). Синтаксис ее таков:

Ниже вы можете сами попробовать вызвать некоторые события:

Очень часто используемый пример - переход по ссылке при нажатии на кнопку:

Чтобы проверить этот сценарий, выделите вашу кнопку, нажмите Ctrl+Alt+A и введите программу.

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

Основные действия с Movie Clips

Огромная доля творчества во Flash приходится на манипуляцию символами. Практически все базовые приемы, все трюки и эффекты невыполнимы без этих действий.

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

Итак, что же у нас есть? Я перечислю только основные (на мой взгляд) инструменты. Остальное вы найдете в списке элементов языка или в помощи.


Функции клипов (movie clip), которые можно вызывать:

  • play() - начинает или возобновляет воспроизведение клипа;
  • stop() - останавливает воспроизведение клипа;
  • gotoAndPlay() - переходит на определенный кадр (сцену) и продолжает воспроизведение;
  • gotoAndStop() - переходит на определенный кадр (сцену) и останавливает воспроизведение.

Свойства (параметры) клипов, которые можно считывать/изменять:

  • _x, _y - координаты клипа (в пикселях);
  • _xscale, _yscale - масштаб клипа (в процентах), соответственно по горизонтали и по вертикали;
  • _w >Это далеко не все, что можно делать с клипами. Используйте другие параметры, экспериментируйте, творите!

Имена

Для того, чтобы обращаться к клипам, нам потребуется разобраться с понятием имени объекта (instance name) и пути до объекта (target path). Договоримся, что клип (movie clip) и объект для нас - одинаковые вещи.

Имя объекта - это имя конкретного экземпляра символа. Скажем, у нас может быть символ - машинка, а экземпляры этого символа будут называться "Машинка1", "Машинка2", "Pickup", "Запорожец".

Для того чтобы дать имя объекту, нужно выделить объект и в панели Instance (Window->Panels->Instance, Ctrl+I) в графе Name ввести имя объекта (рис. 2). Имена могут состоять только из букв, цифр и символа подчеркивания ("_"), причем имя не может начинаться с цифры.

Рис. 2 - Панель Instance

Путь до объекта - это запись имени объекта с учетом иерархии. Попытаюсь объяснить, что это такое.

Вы знаете, что во Flash объекты можно "вкладывать" друг в друга, составляя таким образом иерархию. Так вот, эта вложенность обеспечивает не только удобство в обращении с объектами, она еще и ограничивает видимость имен объектов. Видимость ограничивается своим уровнем. Объект может напрямую (по имени) обращаться только к объектам, входящим в него, стоящим на 1 уровень ниже в иерархии.

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

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

this - указатель на "самого себя" (т.е. на текущий объект). Бывает нужен, например, для передачи в функцию указателя на объект, из которого эта функция вызывается.

_parent - указатель на "родителя". Указывает на объект, стоящий в иерархии одним уровнем выше.

_root - "корень". Это начало иерархии. Без него не обойтись при указании абсолютного пути.

Путь выглядит так:

leaf.play(); - у подобъекта leaf (лист) вызывается функция play();

_parent.tree.leaf.stop(); - подразумевается, что на одном уровне имеется объект tree, у которого есть объект leaf, у которого и вызывается функция stop();

_root.banner._visible = false; - сделать клип banner, находящийся на 1-м уровне, невидимым.

Рис. 3 - Иерархия клипов

Для иллюстрации возьмем иерархию из 5-ти объектов (рис. 3). Объекты 1-4 находятся на 1-м слое, объект 5 - на 2-м слое. Объект 2 вложен в объект 1, а объект 3 вложен в объект 2. Объекты на рисунке визуально вложены друг в друга, но это ни в коем случае не означает, что так должно быть и "в жизни". Здесь они так сгруппированы для наглядности. Так как имя объекта не может начинаться с цифры, пусть объекты у нас называются obj1-obj5.

Теперь займемся путями. Для начала посмотрим, какие объекты могут обращаться друг к другу по имени. obj1 может обращаться к obj2, а obj2 - к obj3, но при этом obj1 не может обратиться к obj3 напрямую, т.к. тот содержится не в obj1, а в obj2.

Например, первому объекту нужно, чтобы объект 3 начал заново воспроизводиться с 1-го кадра. Вот как это делается:

Чтобы 4-му объекту сделать 1-й объект (заметьте - со всеми подобъектами!) полупрозрачным, ему нужно в своем сценарии написать следующее:

Так как obj4 у нас находится на первом уровне иерархии, то для него _root и _parent - одно и то же.

Теперь для объекта 3 напишем скрипт, который сделает объект 5 невидимым при нажатии клавиши мыши. В сценарии для объекта 3 пишем:

В этом фрагменте мы использовали абсолютный путь. Если бы мы использовали относительный, это выглядело бы как:

Надеюсь, я прояснил момент с путями.

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

Вы можете попробовать использовать обработчик onClipEvent, задавая различные условия и выполняя различные действия с объектами при этом.

Одними из самых важных являются функции управления ходом воспроизведения клипа (play(), stop(), gotoAndPlay(), gotoAndStop()). Функции play() и stop() вызываются без параметров, в то время как в goto нужно указывать кадр, и, возможно, сцену.

Отладка в ActionScript

Последнее, что мы рассмотрим в этой статье - окна Output (вывод) и Debugger (отладчик). Это инструменты, служащие для отладки сценариев ActionScript.

Окошко Output пришло из Flash 4, где оно было единственным инструментом для отладки. Существует директива trace(), которая выводит сообщения в это окошко. Туда же выводятся сообщения об ошибках.

Использовать trace очень просто:

В 5-м Flash появился специальный инструмент - окошечко Debugger. Чтобы им пользоваться, нужно проверять свои фильмы не как обычно (Test movie, Ctrl+Enter), а с помощью Debug movie (Ctrl+Shift+Enter). Окошко Debugger (рис. 4) можно скрыть/показать с помощью Window->Debugger.

Рис. 4 - Окно Debugger

В одной части окна Debugger находится иерархический список объектов, используемых в фильме. Выбрав объект, можно просматривать его свойства (закладка Properties).

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

И, наконец, можно добавить любые переменные в список просмотра (Watch list) и наблюдать за их значениями (закладка Watch).

Debugger позволяет отслеживать практически любые параметры Flash-фильмов. Тем не менее, я считаю, что свое применение есть и у окошка Output, и у Debugger-a.

Вот и все на этот раз. Это - последняя статья из цикла. К счастью, сейчас появилось много материалов и руководств по основам Macromedia Flash 5. Статьи по различным аспектам Flash постепенно переводятся/сочиняются на русском языке и появляются на наших сайтах. Последующие материалы по Flash будут посвящены его "продвинутым" аспектам. Так же есть идея написания руководств по другим программам, производящим Flash-фильмы (в частности трехмерные).

Удачи вам! У вас есть великолепное средство делать сеть (и не только сеть) красивее! Пользуйтесь им, доставляя удовольствие посетителям ваших творений и самим себе.

Появился обещаный список ссылок на Flash-ресурсы:

Теперь все мои материалы (с примерами на Flash) можно найти здесь:

Добавить комментарий