Беларусь, рогачёв |
Введение
Что такое технология Flash
На тот случай, если вы не знаете (или знаете весьма смутно), что означает слово Flash на обложке книги, мы в двух словах это поясним. Flash МХ - это система для создания векторной анимации, имеющая достаточно развитые возможности программирования. Поскольку формат Flash стал стандартом и поддерживается всеми распространенными браузерами (в первую очередь, из-за его великолепной компактности и отличной переносимости), Flash в настоящее время используется не только для анимации, но и для интерактивных приложений и даже в качестве пользовательского интерфейса для сложных веб-ориентированных систем.
Как вы, без сомнения, догадываетесь, одним из самых употребительных слов в этой книге будет слово Flash. Так вот, чтобы не перегружать текст латиницей и сделать Flash MX для вас столь же родным, каким он стал для авторов книги, мы будем, как правило, писать слово Flash по-русски: Флэш или Флэш МХ (последний случай - это когда мы хотим подчеркнуть, о какой версии Флэш идет речь). А название Flash MX - латиницей - будем употреблять в основном в тех случаях, когда нам покажется уместным более официальный тон.
Для кого предназначен этот курс
Наш курс лекций ориентирован на программистов. Сейчас Флэш стал достаточно мощной технологией, чтобы делать на ней крупные проекты. Крупные для Флэш - это, конечно, не проекты масштаба предприятия, а проекты, в которых занят десяток дизайнеров, делающих однотипные вещи. Этих дизайнеров нужно "пасти". Позаботиться о повторном использовании компонентов и об их расширении. Для этого такие общие компоненты надо написать и наладить коллективную работу с ними. Для подобной деятельности нужен опытный программист. Если так случилось, что этот программист - вы, то вам понадобится познакомиться с технологией Флэш. Вам нужно будет хотя бы в общих чертах представлять ее рисовательно-анимационные возможности. И максимально подробно - возможности программирования и организации коллективной работы. Для улучшения уровня подготовки дизайнера эта книга тоже может пригодиться - но только как дополнительное чтение. Посему в дальнейшем вас, читатель, я буду считать профессиональным программистом. А поскольку в наши дни довольно трудно найти профессионального программиста, который не знал бы либо С++, либо Java, то мы будем считать, что вы один из этих языков знаете. (Зубры ассемблера и Fortran, простите нас!)
Есть небольшая вероятность, что эта книга попадет в руки начальнику крупного флэш-проекта. Если этот начальник - вы, и проект еще не начался, послушайте нашего совета и не назначайте ответственным за технические вопросы самого опытного и искушенного дизайнера, если он прежде не работал программистом. Вы наверняка знаете, что для начальника проекта проект на пятьдесят человеко-месяцев - совсем не то же самое, что на пять. Поверьте, что с технической точки зрения разница тоже велика. Раньше проекты такого рода на Флэше не делались - технология была еще недостаточно разработана и применялась для создания отдельных анимационных модулей. Теперь на Флэше можно делать мощные интерфейсы, большие порталы (как бы ни ворчали на это те, у кого нет широкополосного соединения), современные обучающие продукты, объемистые игры и многое другое. Флэш эволюционирует в сторону программной системы общего назначения. И хотя по этому пути ему еще идти и идти, сейчас есть масса задач, для которых необходимо совмещение качественной векторной анимации с развитой бизнес-логикой. Независимо от того, делается ли проект полностью на Флэш МХ или же бизнес-логику, выполненную на другой платформе (скажем, J2EE) надо сопрягать с интерфейсами на Флэше - нужен опытный программист, который ранее сталкивался с подобными задачами. Вполне возможно, что тандем программиста и дизайнера в качестве архитекторов флэш-части проекта будет наиболее успешным. Есть лишь одна проблема: большинство профессиональных программистов имеют о Флэше довольно смутное представление. Но это не беда. Программисты любят учиться. Совместными усилиями мы сможем преодолеть эти трудности.
В этой книге наиболее подробно описана версия Flash MX. В процессе подготовки книги к печати появилась версия Flash MX 2004. Она очень сильно расширена в первую очередь в сторону поддержки крупных проектов (крупных для Флэша). Тем не менее, информация по версии МХ все еще актуальна. Во-первых, многие компании работают с лицензионным программным обеспечением и еще не купили себе последнюю версию. Во-вторых, переход на новую версию - это всегда дело достаточно длительное. А начинать проект на инструментарии, который еще не изучен до конца, - дело рискованное. Так что, если ваши дизайнеры еще не перешли на версию МХ 2004, то и вам придется работать с тем, что есть. Многие советы по поводу Флэш МХ будут актуальны и для Флэш 5; но что для него годится, а что нет - об этом специально упоминать не будем. На сегодняшний день Флэш 5 уже бесспорно устарел.
Развитие "крупно-проектной" составляющей Флэш по версиям можно охарактеризовать следующим образом. В версии 4 можно было кое-как сделать кое-что. В версии 5 кое-что уже можно было сделать, как следует. В версии МХ кое-как уже можно было сделать все, что необходимо. Похоже, что в версии MX 2004 практически все уже можно сделать, как следует. Впрочем, совершенства, как известно, нет в этом мире. А мы уж постараемся, чтобы после прочтения этой книги вы смогли максимально снизить дозу "кое-как" в ваших проектах на Флэш МХ.
Кому еще наш курс может быть интересен
В предыдущем параграфе мы попытались рассказать о том, какая непосредственная польза от курса может быть получена. Однако польза - это даже в нашем материальном и меркантильном мире не единственный мотив познания. В конце концов, в программисты идут в первую очередь потому, что программировать интересно. Так вот, мы надеемся, что этот курс будет интересен программистам, которые любят изучать разнообразные языки. Несмотря на несомненное родство с Java и С++, ActionScript 1.0 (язык, встроенный в среду Флэш МХ) - весьма интересный и необычный язык. Чего стоит одно только прототипное наследование, на котором построена объектная модель языка. За счет отсутствия строгого контроля типов язык становится весьма гибким, несмотря на достаточно скромный набор языковых средств. И позволяет эмулировать даже такие сложные вещи, как множественное наследование (которого многим не хватает в Java). Да, конечно, есть язык, который чрезвычайно на ActionScript похож - это JavaScript. Оба они сделаны на основе стандарта ECMA-262. Но многие ли программисты (из которых практически каждый написал сотню-другую строк на JavaScript) пользовались этим языком "на полную катушку"? Скорее всего, большинство из них и не подозревали о множестве скрытых в нем возможностей. Как не подозревали об этих возможностях и авторы данной книги до того, как познакомились с системой Флэш МХ. Так что, если вы хотите познакомиться с еще одним языком программирования (или поглубже вникнуть в него, если вы неплохо знаете JavaScript), - эта книга может вас заинтересовать.
Кстати, даже если вы работаете с Flash MX 2004, ваши знания ActionScript 1.0 не пропадут даром. Во-первых, вы можете скомандовать среде Флэш МХ 2004 использовать при компиляции ActionScript 1.0 вместо ActionScript 2.0 (правда, это помешает вам использовать ряд встроенных компонентов). Кроме того, большая часть сведений, касающихся ActionScript 1.0 для ActionScript 2.0 также актуальна, просто во второй версии появились новые средства, которыми рекомендуется пользоваться вместо старых. (Последняя фраза касается в первую очередь объектной модели). Тем не менее, полной обратной совместимости между версиями языка нет; поэтому в МХ 2004 обратная совместимость реализована при помощи переключения используемой при компиляции версии ActionScript.
Принципы построения курса
При написании курса мы старались помнить, что пишем отнюдь не справочник. Поэтому простого перечисления фактов здесь не будет. С другой стороны, нам хотелось ответить на те вопросы, которые рано или поздно возникают у программиста при знакомстве с такой технологией как Флэш МХ. Однако отвечать на вопросы до того, как их зададут - вещь малополезная. Поэтому в нашем курсе вы практически всегда будете сначала узнавать нечто, провоцирующее вопросы, а уж затем доберетесь до ответов. Разбор головоломок (с целью посмотреть, что же там внутри), как известно, один из наиболее эффективных методов обучения. Если вам такой метод не по душе, и вы хотите сразу добраться до ответов - читайте стандарт ECMA-262, на основе которого сделан язык ActionScript, используемый во Flash MX. Три версии этого стандарта вы можете найти, например, по такому адресу: http://www.mozilla.org/js/language/ (читать лучше последнюю, третью версию; и не забывайте, что некоторые вещи из тех, что есть в стандарте, не реализованы в ActionScript). Если вы привыкли читать стандарты языков, вполне возможно, что вы получите пользу от этого занятия (после чего вы сможете пропустить в нашем курсе лекции 2, 4, 5, 6 и 7). На самом же деле мы уверены, что наш курс даст вам более концентрированную информацию, причем в форме, куда более пригодной для усвоения. Только не удивляйтесь, что мы иногда начинаем подробно и с примерами разбирать вопросы, ответ на которые, казалось бы, можно дать одной строкой. Поступайте как с головоломками: если вы уже догадались, каков ответ, проверьте сразу, правы ли вы, и переходите к следующей.
А теперь, когда мы подробно описали достоинства нашего курса, перейдем к его недостаткам (которые мы, разумеется, тоже считаем достоинствами). Итак, недостает в нашем курсе информации, совершенно необходимой для дизайнера, но, как мы полагаем, совсем ненужной для программиста. А именно, информации о способах, приемах и инструментах, позволяющих создавать на Флэше все эти замечательные анимации, которые то и дело мешают нам бороздить просторы Internet. Если вы не только программист, но и художник - вам понадобится еще одна книга по Флэш МХ, на сей раз построенная стандартным способом и подробно рассматривающая все аспекты деятельности аниматора. В списке литературы вы найдете несколько таких книг. Мы же со своей стороны снабдим программистов исчерпывающей информацией по программному рисованию на Флэше. И еще неизвестно, кто же в результате - программист или аниматор - победит в этом художественном споре.
Зависимости между лекциями
Лекции с первой по пятую являются безусловно необходимыми для понимания последующего материала. (Впрочем, если вы немного знакомы с тем, что собой представляет Флэш МХ, первую лекцию можно не читать. Однако при этом вы рискуете пропустить ряд важных тонкостей, например, встраивание шрифтов при работе с текстовыми полями). Лекции 6 и 7 совершенно необходимы для понимания главы 8, но не очень необходимы (хотя и весьма желательны, особенно глава 6) для чтения дальнейшего материала. Все последующие главы, за исключением лекций 13 и 14, практически независимы друг от друга. А вот для понимания довольно большой части четырнадцатой лекции надо будет изучить тринадцатую.
Теперь давайте обсудим, чем именно наш курс отличается от другой литературы по Флэш МХ. Во-первых, мы старались уделять максимальное внимание глубине изложения материала. Во-вторых, в курсе содержится и такая информация, которую читатель вряд ли сможет найти где-либо еще. В первую очередь это касается содержимого лекций 5, 7, 8, 10 и 13. Сейчас мы поясним, что конкретно в каждой из этих лекций читатель сможет найти только в нашей книге.
В лекциях 5 и 7 подробно описаны различные необычные ситуации, связанные с работой функций и с наследованием соответственно. В лекции 10 детально рассматриваются математические аспекты работы градиентных заливок и кривых Безье во Флэш МХ. В лекции 13 представлены разработанные авторами методики командной работы (автоматического обновления библиотечных компонентов и др.) в проекте, разделяющемся на "библиотечную" и "дизайнерскую" части.
Предметом особой гордости авторов является лекция 8, посвященная множественному наследованию. Фактически, в ней описано полноценное расширение языка ActionScript 1.0, применяемого в системе Флэш МХ (расширение это реализовано, разумеется, средствами самого ActionScript). Заинтересованные читатели могут попробовать перенести это расширение на очень близкий к ActionScript 1.0 язык JavaScript.