WWW.LIB.KNIGI-X.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные матриалы
 


Pages:   || 2 | 3 | 4 | 5 |   ...   | 13 |

«Программирование на ADOBE ACTIONSCRIPT 3.0 ® ® © Adobe Systems Incorporated, 2008. Все права защищены. Авторские права Программирование на Adobe® ...»

-- [ Страница 1 ] --

Программирование на

ADOBE ACTIONSCRIPT 3.0

® ®

© Adobe Systems Incorporated, 2008. Все права защищены.

Авторские права

Программирование на Adobe® ActionScript® 3.0 в Adobe® Flash®

Если данное руководство распространяется с программным обеспечением, которое включает соглашение конечного пользователя, то руководство,

так же как и описанное в нем программное обеспечение, поставляется по лицензии и может быть использовано или скопировано только в

соответствии с условиями этой лицензии. Воспроизведение, хранение в информационно-поисковой системе или передача любых разделов данного руководства в любой форме и любым способом (механическим, электронным, путем записи и т.д.) запрещены без предварительного письменного разрешения Adobe Systems Incorporated. Содержимое данного руководства защищено законом об авторском праве, даже если руководство не распространяется с программным обеспечением, включающим лицензионное соглашение с конечным пользователем.

Содержимое данного руководства предназначено только для информационных целей, может меняться без уведомления и не должно толковаться как обязательство Adobe Systems Incorporated. Adobe Systems Incorporated не несет материальной и прочей ответственности за возможные ошибки и неточности в информационном содержимом этого руководства.

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

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

Adobe, the Adobe logo, Adobe AIR, ActionScript, Flash, Flash Lite, Flex, Flex Builder, MXML, and Pixel Bender are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

ActiveX and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and other countries. Macintosh is a trademark of Apple Inc., registered in the United States and other countries. Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.

This product includes software developed by the Apache Software Foundation (http://www.apache.org/).

MPEG Layer-3 audio compression technology licensed by Fraunhofer IIS and Thomson Multimedia (http://www.mp3licensing.com) Speech compression and decompression technology licensed from Nellymoser, Inc. (www.nellymoser.com).

Video compression and decompression is powered by On2 TrueMotion video technology. © 1992-2005 On2 Technologies, Inc. All Rights Reserved.

http://www.on2.com.

This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/).

This product contains either BSAFE and/or TIPEM software by RSA Security, Inc.

Sorenson Spark™ video compression and decompression technology licensed from Sorenson Media, Inc.

Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA Notice to U.S. government end users. The software and documentation are “Commercial Items,” as that term is defined at 48 C.

F.R. §2.101, consisting of “Commercial Computer Software” and “Commercial Computer Software Documentation,” as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202, as applicable. Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §§227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States.

Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. For U.S. Government End Users, Adobe agrees to comply with all applicable equal opportunity laws including, if appropriate, the provisions of Executive Order 11246, as amended, Section 402 of the Vietnam Era Veterans Readjustment Assistance Act of 1974 (38 USC 4212), and Section 503 of the Rehabilitation Act of 1973, as amended, and the regulations at 41 CFR Parts 60-1 through 60-60, 60-250,and 60-741. The affirmative action clause and regulations contained in the preceding sentence shall be incorporated by reference.

iii Содержание Глава 1. О руководстве Использование руководства

Как найти документацию по ActionScript

Ресурсы по изучению ActionScript

–  –  –

Глава 1. О руководстве В руководстве освещаются основы разработки приложений на языке Adobe® ActionScript® 3.

0. Для наилучшего понимания описываемых принципов и техник вы должны быть знакомы с основными понятиями программирования, такими как типы данных, переменные, циклы и функции. Вы должны понимать основные принципы объектно-ориентированного программирования, такие как классы и наследование. Знание языка ActionScript версии 1.0 или 2.0 будет полезно, но необязательно.

Использование руководства Главы руководства разбиты на логические группы, чтобы вам было удобнее находить связанные темы в документации по ActionScript.

–  –  –

Также в руководстве содержатся многочисленные примеры файлов, демонстрирующих принципы программирования с участием важных или часто используемых классов. Образцы файлов объединены в пакеты таким образом, чтобы их было легче загружать и использовать с Adobe® Flash® CS4 Professional. Они также могут включать файлы-оболочки. Тем не менее, ключевым образцом является сам код ActionScript 3.0, который можно использовать в любой среде разработки.

Язык ActionScript 3.0 можно использовать для написания и компиляции программ несколькими способами, среди которых:

• использование среды разработки Adobe Flex Builder 3;

• использование любого текстового редактора и компилятора командной строки, например компилятора Flex Builder 3;

• использование средства разработки Adobe® Flash® CS4 Professional.

Дополнительную информацию о средах разработки ActionScript см. в разделе «Введение в ActionScript 3.0» на странице 4 Примеры кода в данном руководстве будут понятны и тем читателям, у которых нет опыта работы с интегрированными средами разработки ActionScript (например, Flex Builder или средство разработки Flash).

Тем не менее, придется обращаться к документации по этим средствам за информацией о том, как писать и компилировать код ActionScript 3.0. Дополнительную информацию см. в разделе «Как найти документацию по ActionScript» на странице 2.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 2

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

Документация по ActionScript 3.0 Данное руководство призвано познакомить вас с принципами языка программирования ActionScript 3.0, а также с подробностями реализации и примерами, иллюстрирующими важные особенности языка. Тем не менее, данное руководство нельзя считать исчерпывающим источником информации по этому языку. За дополнительной информацией обратитесь к справочнику по языку ActionScript 3.0 и компонентам, в котором описываются все классы, методы, свойства и события языка. В справочнике по языку ActionScript 3.0 и компонентам приводится детальная информация о ключевых компонентах инструмента разработки Flash (в пакетах fl) и API-интерфейсах проигрывателя Flash Player и среды Adobe AIR (в пакетах flash).

Документация по Flash При использовании инструмента разработки Flash рекомендуется ознакомиться перечисленными ниже руководствами.

–  –  –

Разработка приложений AIR с помощью Adobe Flash В нем рассказывается, как разрабатывать и развертывать приложения Adobe CS4 Professional AIR с помощью ActionScript 3.0 и API-интерфейса Adobe AIR во Flash.

–  –  –

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

Центр разработчиков Adobe Центр разработчиков Adobe — это источник самой свежей информации об ActionScript, статей о практике разработки приложений и ответов на все возникающие вопросы.

Посетите Центр разработчиков по адресу:

www.adobe.com/devnet/.

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

Дважды в месяц на сайте Центра публикуются свежие самоучители и статьи, а также примеры интересных работ. Посетите Центр дизайна по адресу: www.adobe.com/designcenter/.

Глава 2. Введение в ActionScript 3.

0 В этой главе представлен обзор Adobe® ActionScript® 3.0, самой современной и эффективной версии языка ActionScript.

О языке ActionScript ActionScript является языком программирования, используемым в средах выполнения Adobe® Flash® Player и Adobe® AIR™. Он обеспечивает интерактивность, обработку данных и многие другие возможности в содержимом Adobe Flash, Flex и AIR, а также в приложениях.

ActionScript выполняется виртуальной машиной ActionScript (AVM), которая является частью проигрывателя Flash Player и пакета AIR. Обычно код ActionScript компилируется в формате байт-кодов (разновидность языка программирования, записываемого и распознаваемого компьютерами) компилятором, таким, какой встроен в Adobe® Flash® CS4 Professional или Adobe® Flex™ Builder™, а также доступен в Adobe® Flex™ SDK. Байткоды встраиваются в SWF-файлы, которые выполняются в проигрывателе Flash Player и AIR.

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

• Новая виртуальная машина ActionScript, называемая AVM2, использует новый набор инструкций в байткодах и обеспечивает значительный прирост производительности

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

• Расширенный и улучшенный интерфейс программирования приложений (API) с контролем объектов на нижнем уровне и подлинной объектно-ориентированной моделью

• Интерфейс программирования приложений XML создан на основе спецификации ECMAScript для XML (E4X) (ECMA-357 редакция 2). E4X является расширением языка ECMAScript, который добавляет XML в качестве поддерживаемого языком типа данных.

• Модель события на основе спецификации событий DOM уровня 3 Преимущества ActionScript 3.0 ActionScript 3.0 превосходит возможности создания сценариев предыдущих версий ActionScript. Специально разработан, чтобы облегчить создание сложных приложений с большим набором данных и объектноориентированным, многократно используемым программным кодом. Хотя ActionScript 3.0 не обязателен для содержимого, выполняемого в Adobe Flash Player, он открывает возможность повышения производительности, доступные только с AVM2, новой виртуальной машиной. Код ActionScript 3.0 может выполняться до десяти раз быстрее, чем код прежней версии ActionScript.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 5

Введение в ActionScript 3.0 Более старая версия виртуальной машины ActionScript, AVM1, выполняет код ActionScript 1.0 и ActionScript

2.0. AVM1 поддерживается в Flash Player 9 и 10 для обратной совместимости с существующим и старым содержимым. Дополнительные сведения см. в разделе «Совместимость с предыдущими версиями» на странице 8.

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

Примечание. Приложения Adobe® AIR™ также могут использовать прикладные программные интерфейсы Flash Player.

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

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

Типы выполнения В ActionScript 2.0 указания типов переменных служили в первую очередь подсказками разработчикам; при выполнении все значения вводились динамически. В ActionScript 3.0 информация типов сохраняется во время выполнения и используется в нескольких целях. Программы Flash Player и Adobe AIR во время выполнения осуществляют проверку информации о типе, повышая безопасность системных типов. Информация о типе также используется для представления переменных в исходном двоичном представлении, что повышает производительность и снижает потребление памяти.

Запечатанные классы В ActionScript 3.0 представлена концепция запечатанных классов. Запечатанный класс обладает фиксированным набором свойств и методов, определенных во время компиляции; дополнительные свойства и методы к нему добавить нельзя. Это позволяет усилить контроль во время компиляции, а значит повысить надежность программ. Также оптимизируется использование памяти, поскольку для каждого экземпляра объекта не требуется отдельная внутренняя хеш-таблица. Возможно использование динамических классов с помощью ключевого слова dynamic. Все классы в ActionScript 3.0 по умолчанию «запечатаны», но могут быть объявлены динамическими с помощью ключевого слова dynamic.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 6

Введение в ActionScript 3.0 Закрытия методов ActionScript 3.0 позволяет при закрытии метода автоматически запомнить исходный экземпляр объекта. Эта возможность особенно полезна при обработке событий. В ActionScript 2.0 при закрытиях методов не запоминалось, из какого экземпляра объекта они извлекались, что приводило к непредсказуемому поведению при вызове закрытия метода. Наиболее популярным обходным способом было использование класса mx.utils.Delegate, но теперь это уже не требуется.

ECMAScript для XML (E4X) В ActionScript 3.0 реализован язык сценариев ECMAScript для XML (E4X), недавно стандартизированный как ECMA-357. E4X предлагает органичный, очень удобный набор языковых конструкций для работы с XML. В отличие от стандартных прикладных интерфейсов программирования для разбора XML в языке E4X обеспечивается поддержка XML как встроенного типа данных. E4X упрощает разработку приложений, работающих с XML, значительно сокращая длину программных кодов. Дополнительные сведения о реализации E4X в ActionScript см. в разделе «Работа с XML» на странице 242.

Для просмотра спецификации ECMA E4X перейдите по адресу www.ecma-international.org.

Регулярные выражения ActionScript 3.0 включает встроенную поддержку регулярных выражений, что позволяет быстро выполнять поиск и обработку соответствующих строк. Поддержка регулярных выражений в ActionScript 3.0 реализована в соответствии с их определением в спецификации языка ECMAScript (ECMA-262) версии 3.

Пространства имен Пространства имен аналогичны традиционным спецификаторам доступа, используемым для управления видимостью деклараций (public, private, protected). Они работают как пользовательские спецификаторы доступа, имена для которых можно задавать по своему выбору. Во избежание коллизий пространства имен задаются идентификаторами URI, которые также используются для представления пространств имен XML при работе в E4X.

Новые типы примитивов В ActionScript 2.0 был один численный тип, Number, позволявший задавать числа с плавающей точкой и с двойной точностью. ActionScript 3.0 содержит два типа: int и uint. Тип int задает 32-разрядные целочисленные значения со знаком, позволяя коду ActionScript использовать преимущество быстрой обработки целочисленных математических операций центральным процессором. Тип int удобен для создания счетчиков циклов и целочисленных переменных. Тип uint задает 32-разрядные целочисленные значения без знака, его удобно использовать для определения значений цвета RGB, байтовых счетчиков и т.д.

Возможности прикладных интерфейсов программирования Flash Player Прикладные интерфейсы программирования (API) Flash Player в ActionScript 3.0 содержат много классов, позволяющих управлять объектами на нижнем уровне. Усовершенствована архитектура языка: она стала более удобной и понятной, чем в предыдущих версиях. Число добавленных классов слишком велико, чтобы подробно рассматривать их здесь, в следующих разделах описываются только некоторые, наиболее важные изменения.

Примечание. Приложения Adobe® AIR™ также могут использовать прикладные программные интерфейсы Flash Player.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 7

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

События и события обработки ошибок размещаются в пакете flash.events. В структуре компонентов Adobe Flash используется та же модель событий, что и в прикладном программном интерфейсе Flash Player, поэтому система обработки ошибок едина для всей платформы Adobe Flash.

Прикладной программный интерфейс списка отображения Прикладной программный интерфейс для доступа к списку отображения проигрывателя Flash Player и Adobe AIR — дерево, содержащее все отображаемые элементы приложения — состоит из классов для работы с визуальными примитивами.

Новый класс Sprite является облегченным конструктивным элементом, сходным с классом MovieClip, но более пригодным в качестве базового класса для компонентов пользовательского интерфейса. Новый класс Shape воспроизводит векторные фигуры без сжатия. Экземпляры этих классов легко могут создаваться с помощью оператора new, а затем динамически переназначаться в любое время другим родительским объектам.

Управление глубиной теперь осуществляется автоматически и встроено в Flash Player и Adobe AIR, так что назначение глубины при прорисовке больше не требуется. Для определения z-порядка объектов и управления ими предлагаются новые методы.

Обработка динамических данных и содержимого ActionScript 3.0 содержит механизмы для загрузки ресурсов и данных в приложение с последующей их обработкой. Эти механизмы интуитивно понятны и согласованы с различными прикладными программными интерфейсами. Новый класс Loader предлагает единый механизм для загрузки SWF-файлов и графических ресурсов, а также обеспечивает способ доступа к детальной информации о загруженном содержимом. Класс URLLoaderпредлагает отдельный механизм для загрузки текстовых и двоичных данных в управляемые данными приложения. Класс Socket предлагает средства для считывания и записи двоичных данных в серверные сокеты в любом формате.

Доступ к данным на нижнем уровне Различные прикладные программные интерфейсы обеспечивают доступ к данным нижнего уровня, который раньше в ActionScript был невозможен. Для данных, которые были загружены, класс URLStream, реализуемый с помощью URLLoader, обеспечивает доступ к несжатым двоичным данным непосредственно в процессе загрузки. Класс ByteArray позволяет оптимизировать чтение, запись и работу с двоичными данными. Новый прикладной интерфейс программирования звука обеспечивает точное управление звуком с помощью классов SoundChannel и SoundMixer. Новые прикладные программные интерфейсы взаимодействуют с системами безопасности, предоставляя информацию о соответствующих привилегиях SWF-файла или загруженного содержимого, позволяя лучше обрабатывать ошибки в системе безопасности.

–  –  –

getCharBoundaries(), который возвращает прямоугольник, отражающий границы поля символа; метод getCharIndexAtPoint(), который возвращает индекс символа в указанной точке; а также метод getFirstCharInParagraph(), который возвращает индекс первого символа в параграфе. К методам работы на уровне строк относятся метод getLineLength(), возвращающий число символов в указанной строке текста, и метод getLineText(), который возвращает текст из указанной строки. Новый класс Font обеспечивает средства для управления встроенными шрифтами в SWF-файлах.

Совместимость с предыдущими версиями Как обычно проигрыватель Flash Player обеспечивает полную обратную совместимость с ранее опубликованным содержимым. Любое содержимое, которое выполнялось в предыдущих версиях проигрывателя Flash Player, выполняется и в Flash Player 9, а также в более поздних версиях. Появление поддержки ActionScript 3.0 в проигрывателе Flash Player 9 в то же время создает некоторые проблемы во взаимодействии между старым и новым содержимым, выполняемым в Flash Player 9 и более поздних версиях.

В число проблем взаимодействия входят следующие:

• Отдельный SWF-файл не может объединять программные коды на языках ActionScript 1.0 или 2.0 с программными кодами ActionScript 3.0.

• Программный код ActionScript 3.0 может загрузить SWF-файл, написанный в ActionScript 1.0 или 2.0, но из него будут недоступны переменные и функции этого SWF-файла.

• SWF-файлы, написанные в ActionScript 1.0 или 2.0, не могут загружать SWF-файлы, написанные в ActionScript 3.0. Это означает, что SWF-файлы, созданные в Adobe Flash 8 или Flex Builder 1.5, а также в более ранних версиях этих программ, не смогут загружать SWF-файлы в ActionScript 3.0.

Единственным исключением из этого правила является то, что SWF-файл ActionScript 2.0 может заменить себя SWF-файлом ActionScript 3.0, если для этого SWF-файла ActionScript 2.0 не выполнялась какая-либо загрузка ни на один из его уровней. В SWF-файле ActionScript 2.0 это можно выполнить с помощью вызова loadMovieNum(), передав значение 0 параметру level.

• В общем случае для SWF-файлов, написанных в ActionScript 1.0 или 2.0, необходимо выполнять перенос, если их предполагается использовать совместно с SWF-файлами ActionScript 3.0. Например, предположим, создается проигрыватель мультимедийных данных с помощью ActionScript 2.0. Этот проигрыватель загружает различное содержимое, которое также было создано с помощью ActionScript 2.0. Нельзя создать новое содержимое в ActionScript 3.0 и загрузить его в этот проигрыватель мультимедийных данных.

Необходимо выполнить перенос видеопроигрывателя в ActionScript 3.0.

Однако, если проигрыватель мультимедийных данных создан в ActionScript 3.0, он сможет выполнять отдельные загрузки содержимого ActionScript 2.0.

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

–  –  –

В следующей таблице «Поддерживаемые функции» относится к содержимому, выполняемому в проигрывателях Flash Player 9 или более поздней версии. Содержимое, выполняемое в проигрывателе Adobe Flash Player 8 или более ранней версии, может быть загружено, просмотрено и выполнено, а также использоваться при вызове из других сценариев только в ActionScript 1.0 и 2.0.

–  –  –

Глава 3. Начало работы с языком ActionScript Информация, приведенная в настоящей главе, необходима для начала программирования на языке ActionScript, а также для понимания основных концепций и примеров, приведенных в конце этого руководства.

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

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

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

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

• Каждый шаг в конечном счете приводит к управлению определенной порцией информации или данных.

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

В сущности, все функции отдельной инструкции программы сводятся к управлению несколькими битами информации, хранящимися в памяти компьютера. В упрощенном случае можно дать инструкцию компьютеру сложить два числа и сохранить результат в памяти. В более сложном случае можно представить себе прямоугольник, нарисованный на экране, и написать программу для перемещения его в другую часть экрана. Компьютер отслеживает определенную информацию о прямоугольнике — координаты его положения «x» и «y», ширину, высоту, цвет и т. п. Каждый бит этой информации хранится в памяти компьютера. Программа перемещения прямоугольника в другую область экрана должна включать такие пошаговые команды, как: «заменить координату «x» на 200; заменить координату «y» на 150» (другими словами, задаются новые значения координат «x» и «y»). Конечно, компьютер обрабатывает эту информацию и превращает цифры в изображение на экране монитора, однако на данном уровне рассмотрения достаточно знать, что процесс перемещения прямоугольника по экрану фактически определяется изменением битов информации, хранящихся в памяти компьютера.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 11

Начало работы с языком ActionScript Переменные и постоянные Поскольку программирование предполагает изменение информации в памяти компьютера, необходимо каким-то образом представлять отдельные порции информации в программе. Переменная является именем, которое представляет значение в памяти компьютера. При записи инструкций для управления значениями имя переменной записывается вместо значения. Когда компьютер обнаруживает имя переменной в программе, он обращается к своей памяти и использует то значение, которое там находится. Например, если есть две переменные с именами value1 (значение 1) и value2 (значение 2), каждая из которых содержит число, тогда для сложения этих чисел можно написать следующую инструкцию:

value1 + value2 При практическом выполнении этих шагов компьютер найдет значения для каждой переменной и сложит их вместе.

В ActionScript 3.0 переменная фактически состоит из трех различных частей:

• имени переменной

• типа данных, которые могут быть сохранены в переменной

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

var value1:Number;

В этом случае компьютеру дается команда создать переменную value1, которая содержит только числовые данные («Number» (число) — специальный тип данных в ActionScript).

Можно также сохранить значение прямо в переменной:

var value2:Number = 17;

В Adobe Flash CS4 Professional есть другой способ задания переменной. При размещении символа фрагмента ролика, символа кнопки или текстового поля в рабочей области можно задать для них имя экземпляра в инспекторе свойств. Flash автоматически создает переменную с тем же именем, что и имя экземпляра, которое можно использовать в коде ActionScript для обращения к элементу рабочей области. Например, если в рабочей области есть символ фрагмента ролика, которому присвоено имя экземпляра rocketShip, тогда при каждом использовании в коде ActionScript переменной rocketShip фактически будет происходить управление этим фрагментом ролика.

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

const SALES_TAX_RATE:Number = 0.07;

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 12

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

Типы данных В ActionScript существует много типов данных, которые можно использовать при создании переменных.

Некоторые из них считаются простыми или фундаментальными типами данных:

• Строки: текстовые значения, такие как имя или текст главы книги

• Числовые: ActionScript 3.0 включает три специфических типа числовых данных:

• Number: любые целые или дробные числовые значения

• int: целые числа без дробей

• uint: беззнаковые (не отрицательные) целые числа

• Логические: значения типа «истинно — ложно», такие как состояния выключателя или равенство или неравенство двух значений Простые типы данных представляют единичные порции информации: например, одно число или единичный текст. Тем не менее, большую часть типов данных в ActionScript следует рассматривать как комплексные, поскольку они представляют сгруппированные наборы значений. Например, переменная с типом данных Date (Дата) представляет единичное значение — момент времени. Тем не менее, значение даты фактически включает в себя несколько значений: день, месяц, год, час, минуты, секунды и т. д., все из которых являются отдельными числами. Таким образом, если дата рассматривается как единичное значение (и используется как единичное значение при создании переменной Date), то компьютер при внутренней обработке принимает ее за группу отдельных значений, которые, взятые вместе, определяют единичную дату.

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

Некоторые из комплексных типов данных, возможно, уже знакомы многим:

• MovieClip: символ фрагмента ролика

• TextField: динамическое или вводимое текстовое поле

• SimpleButton: символ кнопки

• Date: информация о единичном моменте времени (дата и время) Двумя широко распространенными синонимами для обозначения типа данных являются класс и объект.

Класс — это просто определение типа данных. Он подобен шаблону для всех объектов с данным типом данных. Класс показывает, что все переменные экземпляра типа данных имеют определенные характеристики, например: A, B и C. Объект, с другой стороны, является фактическим экземпляром класса;

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

• Типом данных переменной myVariable является Number (число).

• Переменная myVariable является экземпляром Number.

• Переменная myVariable является объектом Number.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 13

Начало работы с языком ActionScript

• Переменная myVariable является экземпляром класса Number.

Работа с объектами ActionScript известен как язык программирования, ориентированный на объекты. Ориентация на объекты — это всего лишь один из подходов в программировании, один из способов организации кода программы с использованием объектов.

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

Те, кому приходилось работать с символами в Flash, фактически уже знают, как работать с объектами.

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

Существует несколько характеристик фрагмента ролика, которые можно изменить. Например, когда он выделен, в инспекторе свойств появляются изменяемые значения, такие как координата x, ширина, различные цветовые коррекции, параметр alpha (прозрачность) или опции фильтра наложения тени. Другие инструменты Flash позволяют осуществлять дополнительные изменения; например, инструмент «Свободное преобразование» выполняет поворот прямоугольника. Все эти модификации символа фрагмента ролика, которые можно выполнять в среде Flash, возможны и в ActionScript при изменении порций данных, объединенных в отдельный пакет, называемый объектом MovieClip.

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

• Свойства

• Методы

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

Свойства Свойство представляет собой одну из порций данных, упакованную в объект. Если объектом является музыкальная композиция, ее свойствами могут быть: artist (имя исполнителя) и title (название). Класс MovieClip имеет такие свойства, как: rotation (поворот), x, width (ширина) и alpha(прозрачность). Работать со свойствами можно так же, как и с отдельными переменными. Фактически свойства можно рассматривать как «дочерние» переменные, содержащиеся в объекте.

Ниже приведены примеры кодов ActionScript, в которых используются свойства. Эта строка кода перемещает MovieClip с именем square (квадрат) по оси X на 100 пикселов.

square.x = 100;

–  –  –

square.rotation = triangle.rotation;

Этот код изменяет горизонтальный масштаб MovieClip square таким образом, что его ширина увеличивается в полтора раза:

square.scaleX = 1.5;

Отметьте общую структуру: переменная (square, triangle) используется как имя объекта, после которого ставится точка (.), а затем следует имя свойства (x, rotation, scaleX). Точка, известная как оператор точки, используется для указания на доступ к одному из дочерних элементов объекта. Полная структура: «имя переменной — точка — имя свойства» используется в качестве одной переменной, как имя единичного значения в памяти компьютера.

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

Этот код дает команду фрагменту ролика с именем shortFilm начать воспроизведение:

shortFilm.play();

Эта строка останавливает воспроизведение фрагмента ролика с именем shortFilm (воспроизводящая головка останавливается, аналогично режиму паузы при воспроизведении видеофильма):

shortFilm.stop();

Этот код дает команду для фрагмента ролика с именем shortFilm переместить воспроизводящую головку на кадр 1 и остановить воспроизведение (аналогично обратной перемотке видеофильма):

shortFilm.gotoAndStop(1);

Как видно из примеров, доступ к методам, также как и к свойствам, осуществляется путем записи имени объекта (переменной), за которым следуют точка, имя метода и скобки. Скобки указывают на вызов метода, то есть дают команду объекту для выполнения действия. Иногда в скобках помещаются значения (или переменные) для передачи дополнительной информации, которая необходима для выполнения действия. Эти значения называются параметрами метода. Например, для метода gotoAndStop() требуется информация о том, к какому кадру следует перейти, поэтому в скобках необходимо указать единичный параметр. Другие методы, такие как play() и stop(), являются очевидными и не требуют дополнительной информации. Тем не менее, они также пишутся со скобками.

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

Например, метод числового класса toString() конвертирует числовое значение в его текстовое представление:

var numericData:Number = 9;

var textData:String = numericData.toString();

В частности, можно использовать метод toString() для отображения значения числовой переменной в текстовом поле на экране. Свойство класса TextField text (которое представляет фактический текст на экране) определено как String, поэтому оно может содержать только текстовые значения. Эта кодовая строка конвертирует числовое значение переменной numericData в текст, а затем отображает его на экране в объекте

TextField с именем calculatorDisplay:

calculatorDisplay.text = numericData.toString();

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 15

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

В сущности, события — это все то, что происходит, о чем ActionScript «знает» и на что может ответить.

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

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

Основные сведения об обработке событий Техника задания определенных действий, которые необходимо выполнить в ответ на определенное событие, называется обработкой события. При написании кода ActionScript для обработки события необходимо определить три важных элемента.

• Источник события: в каком объекте должно произойти событие? Например, какая кнопка будет нажата или какой объект Loader загружает изображение? Источник события называется также целью события, поскольку это объект, события в котором отслеживаются проигрывателем Flash Player или AIR (то есть объект, в котором событие реально происходит).

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

• Ответ: какие шаги необходимо выполнить, когда событие произойдет?

Всякий раз при написании кода ActionScript для обработки событий необходимо включать эти три элемента.

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

function eventResponse(eventObject:EventType):void { // Actions performed in response to the event go here.

}

eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

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

Функция обеспечивает способ для группирования действий под одним именем. То есть создается имя быстрого вызова для выполнения действий. Функция идентична методу, за исключением того, что она обязательно связана с определенным классом. Фактически методом можно назвать функцию, относящуюся к специфическом у классу. При создании функции для обработки события необходимо выбрать для нее имя (в данном случае имя функции eventResponse). Можно также задать один параметр (названный в этом примере eventObject). Указание параметра функции аналогично заданию переменной, поэтому требуется указать также и тип данных параметра. (В этом примере тип данных параметра: EventType).

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 16

Начало работы с языком ActionScript Каждый тип событий, которые требуется отслеживать, имеет соответствующий класс в ActionScript. Тип данных, указанный для параметра функции, всегда связан с классом определенного события, на которое требуется ответить. Например, событие click (запускаемое, когда пользователь щелкает по какому-либо пункту кнопкой мыши) связан с классом MouseEvent (события мыши). Для записи функции listener (прослушивателя) для события click задается параметр этой функции с типом данных MouseEvent. И наконец, в фигурных скобках ({... }) записываются инструкции, которые должен выполнить компьютер при наступлении события.

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

• Во-первых, имя определенного события, на которое требуется ответить. Здесь также каждое событие связано с определенным классом, и этот класс будет иметь специальное значение, предопределенное для каждого события — своего рода уникальное имя события, которое используется в качестве первого параметра.

• Во-вторых, имя функции ответа на событие. Обратите внимание, что имя функции пишется без скобок, когда оно передается как параметр.

Анализ процесса обработки события Ниже приводится пошаговое описание процесса, возникающего при создании прослушивателя события (event listener). Это пример создания функции listener, которая вызывается при щелчке мыши по объекту с именем myButton.

Фактический код, написанный программистом, таков:

function eventResponse(event:MouseEvent):void { // Actions performed in response to the event go here.

} myButton.addEventListener(MouseEvent.CLICK, eventResponse);

–  –  –

2 Затем проигрыватель Flash Player выполняет код (в частности, те строки кода, которых нет в функции). В данном случае это только одна строка кода: вызов метода addEventListener() объекта-источника события (с именем myButton) и передача функции eventResponse как параметра.

a Внутри объекта myButton содержится список функций, которые следят за каждым из его событий, поэтому когда вызывается его метод addEventListener(), myButton сохраняет функцию eventResponse() в своем списке прослушивателей события.

–  –  –

В этот момент происходит следующее:

a Проигрыватель Flash Player создает объект, экземпляр класса, связанного с данным событием (в этом примере — MouseEvent). Для многих событий это будет экземпляр класса Event; для событий мыши это будет экземпляр MouseEvent; для других событий это будет экземпляр класса, связанного с этим событием. Этот созданный объект называется event object. Он содержит специфическую информацию о происшедшем событии: тип, где оно произошло и другие данные, если они применимы.

–  –  –

c При вызове функции eventResponse() начинает выполняться ее код, осуществляя тем самым действия, заданные пользователем.

Примеры обработки событий Ниже приведены несколько конкретных примеров событий, которые помогут получить представление об общих элементах и доступных вариациях при написании кода обработки события:

• Нажатие кнопки для запуска воспроизведения текущего фрагмента ролика. В следующем примере именем экземпляра кнопки является playButton; this — специальное имя, означающее «текущий объект»:

this.stop();

function playMovie(event:MouseEvent):void { this.play();

} playButton.addEventListener(MouseEvent.CLICK, playMovie);

• Обнаружение текста в текстовое поле. В этом примере entryText является входным текстовым полем, а

outputText — динамическим текстовым полем:

function updateOutput(event:TextEvent):void { var pressedKey:String = event.text;

outputText.text = "You typed: " + pressedKey;

} entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);

• Нажатие кнопки для перехода по адресу URL: В этом случае linkButton является именем экземпляра кнопки:

function gotoAdobeSite(event:MouseEvent):void { var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/");

navigateToURL(adobeURL);

}

–  –  –

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

Один простой способ создания экземпляра объекта вообще не требует использования ActionScript. В Flash при размещении символа фрагмента ролика, символа кнопки или текстового поля в рабочей области, если в инспекторе свойств задано имя экземпляра, Flash автоматически задает переменную с именем экземпляра, создает экземпляр объекта и сохраняет этот объект в переменной. Аналогичным образом, когда в Adobe Flex Builder создается компонент в MXML (либо кодированием тега MXML, либо размещением компонента в редакторе в режиме Design), и когда этому компоненту приписывается идентификатор (в разметке MXML или в обзоре свойств Flex), этот идентификатор становится именем переменной ActionScript, а экземпляр компонента создается и сохраняется в переменной.

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

Примеры:

• Литеральное числовое значение (непосредственный ввод числа):

var someNumber:Number = 17.239;

var someNegativeInteger:int = -53;

var someUint:uint = 22;

• Литеральное строчное значение (текст, заключенный в двойные кавычки):

var firstName:String = "George";

var soliloquy:String = "To be or not to be, that is the question...";

• Литеральное логическое значение (используются значения истинно/ложно — true или false):

var niceWeather:Boolean = true;

var playingOutside:Boolean = false;

• Литеральный массив значений (список разделенных запятой значений в квадратных скобках):

var seasons:Array = ["spring", "summer", "autumn", "winter"];

• Литеральное значение XML (непосредственный ввод XML):

var employee:XML = employee firstNameHarold/firstName lastNameWebster/lastName /employee;

–  –  –

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

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

Например, эти две строки кода дают совершенно одинаковый результат:

var someNumber:Number = 6.33;

var someNumber:Number = new Number(6.33);

Очень важно приобрести опыт в создании объектов с помощью метода new ClassName(). Если требуется создать экземпляр какого-либо типа данных ActionScript, который не имеет визуального представления (и следовательно, не может быть создан путем размещения элемента в рабочей области Flash или в режиме Design редактора MXML Flex Builder), тогда сделать это можно путем создания объекта непосредственно в ActionScript с помощью оператора new.

В частности, в Flash можно также использовать оператор new для создания экземпляра символа фрагмента ролика, который определен в Библиотеке, но не помещен в рабочую область. Дополнительную информацию см. в разделе «Создание объектов MovieClip с помощью ActionScript» на странице 437.

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

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

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

Согласно общему правилу оператор использует одно или несколько значений и работает на единичный результат.

Например:

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

var sum:Number = 23 + 32;

• Оператор умножения (*) перемножает два значения, результатом чего также является одно число:

var energy:Number = mass * speedOfLight * speedOfLight;

• Оператор равенства (==) сравнивает два значения и выдает результат в форме единичного (логического) значения истинно/ложно:

if (dayOfWeek == "Wednesday") { takeOutTrash();

}

–  –  –

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

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

// This is a comment; it's ignored by the computer.

var age:Number = 10; // Set the age to 10 by default.

• Многострочные комментарии: состоят из начального маркера /*, содержания комментария и конечного маркера */. Все, что находится между начальным и конечным маркерами, игнорируется компьютером, независимо от того, сколько строк занимает комментарий.

/* This might be a really long description, perhaps describing what a particular function is used for or explaining a section of code.

In any case, these lines are all ignored by the computer. */

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

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

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

Дополнительные сведения о функциях см. в разделе «Функции» на странице 87.

• Циклы: циклические структуры, позволяющие задать набор инструкций, которые компьютер будет выполнять установленное число раз или до изменения некоторых условий. Часто циклы используются для управления несколькими связанными элементами. При этом используется переменная, значение которой изменяется каждый раз, когда компьютер выполнит один цикл. Дополнительные сведения о циклах см. в разделе «Повтор» на странице 84.

• Условные инструкции: обеспечивают способ задавать инструкции, выполняемые только при определенных условиях, или задавать альтернативные наборы инструкций для различных условий.

Наиболее распространенной условной инструкцией является инструкция if. Инструкция if проверяет значение или выражение в скобках. Если это значение истинно — true, тогда строка кода в фигурных скобках выполнятся, в противном случае строка игнорируется.

Например:

if (age 20) { // show special teenager-targeted content }

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 23

Начало работы с языком ActionScript Инструкция else, связанная с инструкцией if, позволяет задать альтернативные инструкции, которые выполняются, если условия не будут соответствовать требованию true:

if (username == "admin") { // do some administrator-only things, like showing extra options } else { // do some non-administrator things } Дополнительные сведения об условных инструкциях см. в разделе «Условия» на странице 82.

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

Процесс создания этого фрагмента будет разделен на следующие основные части:

1 Подготовка FLA-файла для добавления ActionScript и интерактивных элементов.

2 Создание и добавления кнопок.

3 Написание кода ActionScript.

4 Проверка приложения.

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

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

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

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 24

Начало работы с языком ActionScript 3 Добавьте новый слой поверх других слоев на Временной шкале и присвойте ему новое имя: кнопки. В этот слой будут добавлены кнопки.

4 Добавьте новый слой поверх слоя кнопок и присвойте ему имя действия. Сюда будет добавлен код ActionScript для этого приложения.

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

Создание и добавление кнопок к FLA-файлу 1 Используя инструменты рисования, создайте в слое кнопок визуальный образ первой кнопки («воспроизведение»). Например, можно нарисовать горизонтальный овал с текстом по его верхнему краю.

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

3 В главном меню выберите команды «Модификация» «Преобразовать в символ».

4 Выберите в диалоговом окне в качестве типа символа «Кнопка», присвойте символу имя и нажмите «ОК».

5 При выделенной кнопке в инспекторе свойств присвойте ей имя экземпляра playButton.

6 Повторите шаги 1—5 для создания аналогичной кнопки для перехода к главной странице автора. Имя этой кнопки: homeButton.

Написание кода Код ActionScript для этого приложения можно разделить на три функциональных блока, несмотря на то что он вводится в одном месте.

Код нужен для выполнения следующих трех операций:

• Остановить воспроизводящую головку сразу после загрузки SWF-файла (в тот момент, когда воспроизводящая головка подойдет к Кадру 1).

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

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

Создание кода остановки воспроизводящей головки в начале Кадра 1 1 Выберите ключевой кадр для Кадра 1 в слое действий.

2 Чтобы открыть панель «Действия», выберите в главном меню команды «Окно» «Действия».

3 На панели «Сценарий» введите следующий код:

stop();

–  –  –

Код определяет функцию с именем startMovie(). При вызове функция startMovie() запускает временную шкалу и начинает воспроизведение.

3 На строке, следующей за кодом, добавленным на предыдущем шаге, введите следующую строку кода:

playButton.addEventListener(MouseEvent.CLICK, startMovie);

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

Запись кода отправки обозревателя на URL-адрес при нажатии кнопки главной страницы 1 Добавьте две пустые строки в конце кода предыдущего шага.

2 Введите следующий код в нижней части сценария:

function gotoAuthorPage(event:MouseEvent):void { var targetURL:URLRequest = new URLRequest("http://example.com/");

navigateToURL(targetURL);

} Код определяет функцию с именем gotoAuthorPage(). Эта функция сначала создает экземпляр URLRequest, представляющий URL http://example.com/, а затем передает этот URL функции navigateToURL(), заставляя обозреватель пользователя открыть этот URL.

3 На строке, следующей за кодом, добавленным на предыдущем шаге, введите следующую строку кода:

homeButton.addEventListener(MouseEvent.CLICK, gotoAuthorPage);

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

Проверка приложения На этом этапе приложение должно быть полностью работоспособным. Однако чтобы убедиться в этом, его следует проверить.

Выполнение проверки приложения 1 В главном меню выберите команды «Управление» «Тестировать ролик». Flash создает SWF-файл и открывает его в окне проигрывателя Flash Player.

2 Нажмите обе кнопки и убедитесь, что они выполняют требуемые действия.

3 Если кнопки не работают, необходимо выяснить следующее:

• Имеют ли кнопки отдельные имена экземпляров?

• Совпадают ли имена, используемые ли при вызове метода addEventListener(), с именами экземпляров кнопок?

• Используются ли корректные имена событий при вызове метода addEventListener()?

• Указаны ли корректные параметры для каждой из функций? (Обе функции должны иметь один параметр с типом данных MouseEvent.)

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 26

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

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

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

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

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

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

Многие разработчики упрощают организацию кода ActionScript в инструменте разработки Flash, размещая код только в первом кадре временной шкалы или в специальном слое документа Flash. Это упрощает размещение и обслуживание кода в FLA-файлах Flash. Тем не менее, для использования кода в другом проекте Flash необходимо скопировать и вставить код в новый файл.

Если требуется впоследствии использовать код в другом проекте Flash, необходимо сохранить код во внешних файлах ActionScript (то есть в текстовых файлах с расширением.as).

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 27

Начало работы с языком ActionScript Сохранение кода в файлах ActionScript Если проект включает объемный код ActionScript, лучше всего разместить этот код в отдельных исходных файлах ActionScript (то есть в текстовых файлах с расширением.as). Файл ActionScript можно структурировать одним из двух способов в зависимости от характера его использования в приложении.

• Неструктурированный код ActionScript: строки кода, включающие инструкции или функциональные определения, которые написаны так, как если бы они вводились непосредственно в сценарий временной шкалы, MXML-файл и т. п.

Сценарий ActionScript, написанный таким образом, доступен с помощью инструкции include в ActionScript или с помощью тега mx:Script в Adobe Flex MXML. Инструкция ActionScript include позволяет вставить содержимое внешнего файла ActionScript в специальное место сценария внутри заданных границ, как если бы оно было введено туда непосредственно. Тег mx:Script в языке Flex MXML позволяет задать исходный атрибут, определяющий внешний файл ActionScript, который должен быть загружен в этом пункте в приложение. Например, следующий тег загружает внешний файл

ActionScript с именем Box.as:

mx:Script source="Box.as" /

• Определение класса ActionScript: определение класса ActionScript, включая определение его метода и свойства.

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

ActionScript. Это делается в два этапа:

• Используйте инструкцию import для задания полного имени класса, чтобы компилятор ActionScript «знал», где его найти. Например, если требуется использовать класс MovieClip в ActionScript, прежде всего необходимо импортировать этот класс, используя его полное имя, включая пакет и класс.

import flash.display.MovieClip;

Альтернативно можно импортировать пакет, содержащий класс MovieClip, что эквивалентно записи отдельных инструкций import для каждого класса в пакете:

import flash.display.*;

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

Примечание. В Flash для сценариев, прикрепленных к кадрам на временной шкале, встроенные классы (в пакетахflash.*) импортируются автоматически. Тем не менее, при записи собственных классов пользователя, при работе с компонентами разработки Flash (пакеты fl.*),а также при работе в Flex необходимо эксплицитно импортировать каждый класс, для того чтобы записать код, который создает экземпляры этого класса.

• Запишите код, который специально относится к имени класса (обычно задается переменная с этим классом, как его тип данных, и создается экземпляр класса для сохранения в переменной). При обращении к другому имени класса в коде ActionScript компилятору дается команда загрузить определение этого класса. Например, если внешний класс называется Box, эта инструкция инициирует создание нового экземпляра класса Box.

var smallBox:Box = new Box(10,20);

–  –  –

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

Инструмент разработки Flash В дополнение к возможностям создания графики и анимации Adobe Flash CS4 Professional содержит инструменты для работы с кодом ActionScript, которые или присоединены к элементам FLA-файла, или содержатся в специальных внешних файлах ActionScript. Инструмент разработки Flash идеально подходит для тех проектов, которые включают объемные блоки анимации и видео, а также для тех, где большая часть графических материалов создается пользователем самостоятельно, особенно это относится к проектам с минимальной интерактивностью или функциональностью ActionScript. Другой причиной для выбора инструмента разработки Flash может быть желание создавать визуальные материалы и записывать код в одном и том же приложении. Инструмент разработки Flash можно использовать также в том случае, когда использование ранее созданных компонентов интерфейса при небольшом объеме SWF и упрощенный визуальный скиннинг являются ключевыми приоритетами проекта.

Adobe Flash CS4 Professional включает два инструмента для написания кода ActionScript:

• Панель «Действия»: эта панель, доступная при работе с FLA-файлом, позволяет записывать код ActionScript, присоединенный к кадрам на временной шкале.

• Окно «Сценарий»: окно сценария — это специализированный текстовый редактор для работы файлами кода ActionScript (.as).

Flex Builder Adobe Flex Builder является главным инструментом для создания проектов в структуре Flex. В дополнение к визуальным макетам и инструментам редактирования MXML, Flex Builder также включает полнофункциональный редактор ActionScript, поэтому его можно использовать для создания как проектов Flex, так и специализированных проектов ActionScript. Приложения Flex имеют определенные преимущества, включая богатый набор встроенных средств управления интерфейсом, гибкие средства динамического управления компоновкой, встроенные механизмы для работы с внешними источниками данных и возможности связи внешних данных с элементами пользовательского интерфейса. Тем не менее, для обеспечения этих функций требуется дополнительный код, поэтому приложения Flex имеют SWF-файл увеличенного размера и не могут полностью изменить оболочку так просто, как их Flash-аналоги.

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

Сторонний редактор ActionScript Поскольку файлы ActionScript (.as) сохраняются как простые текстовые файлы, для создания этих файлов можно использовать любую программу, способную редактировать простые текстовые файлы. Кроме продуктов ActionScript компании Adobe существуют различные программы с текстовыми редакторами и специальными функциями для ActionScript, созданные сторонними разработчиками. Создать файл MXML или классы ActionScript можно в любой программе с текстовым редактором. Затем с помощью набора Flex SDK, который включает классы структуры Flex и компилятор Flex, из этих файлов можно создать приложение SWF (Flex или только ActionScript). Альтернативно многие разработчики используют сторонние редакторы ActionScript для написания классов ActionScript в сочетании с инструментом разработки Flash для создания графического содержимого.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 29

Начало работы с языком ActionScript Использовать редактор ActionScript сторонних компаний можно в нижеперечисленных случаях.

• Если код ActionScript требуется написать в отдельной программе в сочетании с разработкой визуальных элементов в Flash.

• При использовании приложения в среде программирования, отличной от ActionScript (например, создание HTML-страниц или приложений на другом языке программирования), если требуется использовать то же самое приложение для кодирования в ActionScript.

• Если требуется создать проекты в Flex или только в ActionScript с использованием набора Flex SDK без Flash или Flex Builder.

Ниже перечислены наиболее известные редакторы кодов со специальной поддержкой ActionScript:

• Adobe Dreamweaver® CS4

• ASDT

• FDT

• FlashDevelop

• PrimalScript

• SE|PY Процесс разработки в ActionScript Независимо от объема проекта ActionScript, использование процесса проектирования и разработки приложения сделает работу более эффективной. Процесс разработки приложения в ActionScript 3.0 включает в себя следующие этапы.

1 Проектирование приложения.

Перед созданием приложения следует описать его в общих чертах.

2 Составление кода в ActionScript 3.0.

Код ActionScript создается с помощью Flash, Flex Builder, Dreamweaver или текстового редактора.

3 Создание файла приложения для выполнения кода в Flash или в Flex.

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

4 Публикация и проверка приложения ActionScript.

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

Обратите внимание, что все действия этих этапов не обязательно выполнять в указанном порядке, не обязательно также полностью завершать один этап, прежде чем приступать к следующему. Например, можно разработать один экран приложения (этап 1), а затем создать графику, кнопки и т. д. (этап 3) до написания кода ActionScript (этап 2) и проверки (этап 4). Можно также разработать часть приложения, а затем добавлять отдельные кнопки или элементы интерфейса, создавая для каждого элемента код ActionScript и проверяя его по мере готовности. Несмотря на то, что последовательность этих четырех этапов полезно запомнить, в реальной ситуации обычно более эффективно переходить вниз или вверх по этапам, как представляется удобным.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 30

Начало работы с языком ActionScript Создание пользовательских классов Процесс создания классов для использования в пользовательском проекте кажется довольно сложным. Тем не менее, самой сложной частью в создании класса является его разработка — определение методов, свойств и событий, которые он будет включать.

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

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

• Объекты значений: используются главным образом как контейнеры данных. Они имеют несколько свойств и методов (причем методов обычно меньше или нет совсем). Как правило, эти объекты являются кодовыми представлениями четко обозначенных элементов, таких как класс Song (представляющий одну реальную песню) или класс Playlist (представляющий схематическую группу песен) в программе музыкального проигрывателя.

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

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

2 Определите специальные функции для данного класса. Различные функциональные типы часто становятся методами класса.

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

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

• Какие порции информации будущее приложение будет сохранять, отслеживать и обрабатывать?

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

• Какой набор действий должен быть выполнен? Например: когда происходит первая загрузка приложения? Когда нажимается отдельная кнопка? Когда останавливается воспроизведение ролика? И т. д. Эти элементы являются хорошими кандидатами в методы (или свойства, если только «действия»

допускают изменение отдельных значений).

• Для каждого действия: какая информация требуется для класса, чтобы данное действие было выполнено? Эти порции информации становятся параметрами метода.

• По мере выполнения программы, что будет изменяться в классе, о чем должны будут знать другие компоненты приложения? Эти элементы являются хорошими кандидатами в события.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 31

Начало работы с языком ActionScript 5 Если существует некий объект, аналогичный тому, который требуется создать, во всем, за исключением некоторых функций, которые можно добавить, подумайте о возможности создания подкласса (то есть класса, который можно построить на функциональной основе существующего класса, вместо того чтобы задавать все функции самостоятельно). Например, если требуется создать визуальный объект на экране, можно использовать характеристики существующих экранных объектов (таких как Sprite или MovieClip) в качестве базиса для создания собственного класса. В этом случае MovieClip (или Sprite) будет базовым классом, а создаваемый класс будет расширением этого класса. Более подробно о создании подкласса см. в разделе «Наследование» на странице 118.

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

Ниже перечислены основные шаги создания собственного класса ActionScript:

1 Откройте новый текстовый документ в программе со специальными функциями ActionScript (такой как Flex Builder или Flash) в общем инструменте программирования, (например, Dreamweaver) или в любой программе, позволяющей работать с простыми текстовыми документами.

2 Введите инструкцию class для задания имени класса. Для этого введите слова public class, затем имя класса и открывающую/закрывающую пару фигурных скобок, между которыми будет расположено содержимое класса (определения методов и свойств). Например:

public class MyClass { } Слово public означает, что этот класс доступен для любого другого кода. Другие возможности описаны в разделе «Атрибуты пространства имен для управления доступом» на странице 103.

3 Введите инструкцию package для задания имени пакета, в котором можно будет найти созданный класс.

Синтаксис состоит из слова package, полного имени пакета и открывающей/закрывающей пары фигурных скобок (между которыми будет расположен блок инструкции class).

Например, код предыдущего шага изменяется следующим образом:

package mypackage { public class MyClass { } } 4 Определите каждое свойство в классе, используя инструкцию var внутри тела класса. Синтаксис остается тем же, что и при задании переменной (с добавлением модификатора public).

Например, добавление следующих строк между открывающей/закрывающей фигурными скобками определения класса приведет к созданию свойств с именами textVariable, numericVariable и dateVariable:

public var textVariable:String = "some default value";

public var numericVariable:Number = 17;

public var dateVariable:Date;

–  –  –

public function myMethod(param1:String, param2:Number):void { // do something with parameters }

• Для создания конструктора (специального метода, который является частью процесса создания экземпляра класса), создайте метод с именем, которое в точности совпадает с именем класса:

public function MyClass() { // do stuff to set initial values for properties // and otherwise set up the object textVariable = "Hello there!";

dateVariable = new Date(2001, 5, 11);

} Если пользователь не включает метод конструктора в свой класс, компилятор автоматически создает в классе пустой конструктор (без параметров и инструкций).

Существует еще несколько элементов класса, которые может задать пользователь. Эти элементы более сложны.

• Средства доступа — это специальные узлы связи между методом и свойством. Когда записывается код для определения класса, средство доступа записывается как метод. Таким образом, можно выполнять множественные действия (а не только чтение и задание значения — единственные действия, доступные при задании свойства). Тем не менее, при создании экземпляра класса средство доступа рассматривается как свойство — используется только его имя для чтения и задания значения. Дополнительные сведения см. в разделе «Методы доступа get и set» на странице 111.

• События в ActionScript не задаются с помощью специального синтаксиса. Вместо этого события определяются в пользовательском классе с помощью функций класса EventDispatcher, чтобы контролировать прослушивателей события и уведомлять их о событиях. Дополнительные сведения о создании событий в пользовательских классах см. в разделе «Обработка событий» на странице 264.

Пример: создание базового приложения Внешние исходные файлы ActionScript с расширением.as можно создавать с помощью Flash, Flex Builder, Dreamweaver или любого текстового редактора.

ActionScript 3.0 можно использовать в различных средах разработки, включая авторизованный инструмент Flash и Flex Builder.

В этом разделе описаны этапы создания и модернизации простого приложения ActionScript 3.0 с использованием инструмента разработки Flash или Flex Builder. Рассматриваемое приложение служит простой моделью для использования внешних файлов классов ActionScript 3.0 в приложениях Flash и Flex. Эта модель будет использована также во всех других демонстрационных приложениях настоящего руководства.

–  –  –

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

Первым примером приложения ActionScript будет простая стандартная программа.

• Называться эта программа будет «HelloWorld» (Здравствуй, мир).

• Она будет отображать единственное текстовое поле, содержащее слова «Hello World!»

• С целью повторного использования, здесь применяется отдельный, ориентированный на объект класс с именем Greeter, который можно использовать в документе Flash или приложении Flex.

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

После этого краткого определения можно приступать к созданию приложения.

Создание проекта HelloWorld и класса Greeter В проектном задании для приложения Hello World говорится, что его код должен допускать простое повторное использование. С этой целью в данном приложении используется отдельный, ориентированный на объект класс с именем Greeter, который используется внутри приложения, созданного с помощью авторизованного инструмента Flash или Flex Builder.

Создание класса Greeter с помощью инструмента разработки Flash 1 В инструменте разработки Flash выберите «Файл» «Создать».

2 В диалоговом окне «Создать документ» выберите файл ActionScript и нажмите кнопку «ОК».

Теперь появится окно редактирования нового файла ActionScript.

3 Выберите команды «Файл» «Сохранить». Выберите папку для размещения приложения, присвойте файлу ActionScript имя Greeter.as и нажмите кнопку «ОК».

После этого можно перейти к «Добавление кода к классу Greeter» на странице 33.

Добавление кода к классу Greeter Класс Greeter определяет объект Greeter, который можно будет использовать в приложении HelloWorld.

–  –  –

Класс Greeter включает один метод sayHello(), который возвращает строку с фразой «Hello World!».

2 Для сохранения этого файла ActionScript выберите команды «Файл» «Сохранить».

Класс Greeter теперь готов для использования в приложении.

Создание приложения с использованием кода ActionScript Класс Greeter, который был только что создан, определяет самодостаточный набор программных функций, однако он не представляет собой законченное приложение. Чтобы использовать этот класс, необходимо создать документ Flash или приложение Flex.

Приложение HelloWorld создает новый экземпляр класса Greeter. Ниже описывается процедура присоединения класса Greeter к создаваемому приложению.

Создание приложения ActionScript с помощью инструмента разработки Flash 1 Выберите команды «Файл» «Создать».

2 В диалоговом окне «Создать документ» выберите документ Flash и нажмите кнопку «ОК».

После этого появится окно нового документа Flash.

3 Выберите команды «Файл» «Сохранить». Выберите папку, в которой находится файл класса Greeter.as, присвойте документу Flash имя HelloWorld.fla и нажмите кнопку «ОК».

4 В палитре инструментов Flash выберите инструмент «Текст» и методом перетаскивания задайте в рабочей области новое текстовое поле примерно 300 пикселов длиной и 100 пикселов высотой.

5 На панели «Свойства» при все еще выделенном в рабочей области текстовом поле задайте тип текста как «Динамический текст» и введите mainText в качестве имени экземпляра текстового поля.

6 Щелкните кнопкой мыши первый кадр временной шкалы.

7 На панели «Действия» введите следующий сценарий:

var myGreeter:Greeter = new Greeter();

mainText.text = myGreeter.sayHello();

–  –  –

Публикация и проверка приложения ActionScript Разработка программного обеспечения — это интерактивный процесс. После написания кода его необходимо компилировать и редактировать до тех пор, пока он не будет полностью соответствовать поставленным задачам. Составленное приложение запускается и проверяется на соответствие проектному заданию. Если будут выявлены какие-либо несоответствия, код необходимо будет отредактировать. В средах разработки Flash и Flex Builder предусмотрено несколько способов для публикации, проверки и отладки приложений.

Ниже приводятся основные этапы проверки приложения HelloWorld в каждой из упомянутых сред.

Публикация и проверка приложения ActionScript с помощью инструмента разработки Flash 1 Опубликуйте приложение и проверьте его на наличие ошибок компиляции. Для компиляции кода ActionScript и запуска приложения HelloWorld в авторизованном инструменте Flash выберите «Управление» «Тестировать ролик».

2 Если при проверке приложения в окне «Вывод» появятся сообщения об ошибках или предупреждения, устраните причины этих ошибок в файлах HelloWorld.fla или HelloWorld.as, после чего проверьте приложение снова.

3 При отсутствии ошибок компиляции приложение Hello World появится в окне Flash Player.

После успешного создания простого, но законченного приложения ActionScript 3.0, ориентированного на объект, можно приступить к «Модернизация приложения HelloWorld» на странице 35.

Модернизация приложения HelloWorld Чтобы сделать приложение более интересным, можно ввести в него подтверждение имени пользователя после сверки с заданным списком имен.

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

–  –  –

• Метод sayHello() принимает имя пользователя и изменяет приветствие в зависимости от определенных условий. Если имя пользователя userName задано пустой строкой (""), свойство greeting устанавливается на запрос имени пользователя. Если имя пользователя принято, приветствие выглядит так: "Hello, userName." И наконец, при невыполнении предыдущих двух условий переменная greeting устанавливается таким образом: "Sorry userName, you are not on the list." («Извините, [имя пользователя], Вас нет в списке»).

• Метод validName() возвращает истинное значение true, если введенное имя inputName найдено в массиве validNames, и возвращает ложное значение false, если имя не найдено. Инструкция validNames.indexOf(inputName) сверяет каждую строку массива validNames со строкой введенного имени inputName. Метод Array.indexOf() возвращает указатель позиции первого экземпляра объекта в массиве, то есть значение -1, если объект не найден в массиве.

После этого можно заняться редактированием файлов Flash или Flex, соответствующих данному классу ActionScript.

Модификация приложения с помощью инструмента разработки Flash 1 Откройте файл HelloWorld.fla.

2 Измените сценарий в Кадре 1 так, чтобы пустая строка ("") перешла в метод sayHello() класса Greeter:

var myGreeter:Greeter = new Greeter();

mainText.text = myGreeter.sayHello("");

3 Выберите инструмент «Текст» на палитре инструментов, затем создайте два текстовых поля в рабочей области рядом друг с другом и непосредственно под текстовым полем mainText.

4 В первом новом текстовом поле введите текст User Name:, который будет служить меткой.

5 Выберите другое текстовое поле и установите его тип в инспекторе свойств как InputText. В качестве типа строки выберите Single line (отдельная строка). Введите textIn в качестве имени экземпляра.

6 Щелкните кнопкой мыши первый кадр временной шкалы.

7 На панели «Действия» добавьте следующие строки в конце имеющегося сценария:

mainText.border = true;

textIn.border = true;

textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);

function keyPressed(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) { mainText.text = myGreeter.sayHello(textIn.text);

} }

–  –  –

• Настраиваемая функция keyPressed() проверяет, будет ли нажата именно клавиша Enter. Если требуемая клавиша нажата, метод sayHello() объекта myGreeter передает текст из текстового поля textIn в качестве параметра. Этот метод возвращает строку приветствия, основываясь на переданном значении. Возвращенная строка затем приписывается к свойству text текстового поля mainText.

Полный сценарий для Кадра 1 выглядит следующим образом:

var myGreeter:Greeter = new Greeter();

mainText.text = myGreeter.sayHello("");

mainText.border = true;

textIn.border = true;

textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);

function keyPressed(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) { mainText.text = myGreeter.sayHello(textIn.text);

} } 8 Сохраните файл.

9 Для запуска приложения выберите команды «Управление» «Тестировать ролик».

После запуска приложения будет предложено ввести имя пользователя. Если имя принимается программой, появится подтверждающее сообщение «hello».

Рассмотрение последующих примеров Работа с приложением ActionScript 3.0 «Hello World» позволила приобрести основные знания, необходимые для запуска других демонстрационных сценариев, представленных в настоящем руководстве.

Тестирование примеров кода При изучении данного руководства рекомендуется самостоятельно тестировать примеры кода, иллюстрирующие различные темы. Тестирование может включать отображение значений переменных в определенных пунктах программы или просмотр содержимого экрана с возможностью интерактивного взаимодействия. Необходимые элементы для тестирования визуального содержимого и интерактивного взаимодействия будут описаны до или внутри примеров кода — для тестирования кода программисту потребуется только создать документ с описанными элементами. Просмотреть значение переменной в определенном пункте программы можно несколькими способами. Одним из этих способов является использование программы отладки. Такие программы (отладчики) встроены в Flex Builder и Flash. Однако для простой проверки будет легче распечатать значения переменной в каком-либо месте, где можно будет просмотреть их.

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

–  –  –

2 Для отображения тестовых значений в текстовом поле рабочей области активируйте инструмент «Текст» и создайте новое поле динамического текста в рабочей области. Наиболее пригодным для этих целей будет широкое и высокое текстовое поле с включенной рамкой и многострочным типом линии. В инспекторе свойств присвойте текстовому полю имя экземпляра (например, «outputText»). Чтобы записать значения в текстовое поле, необходимо добавить код, вызывающий метод appendText() кода примера (описание приведено ниже).

3 Альтернативно можно добавить к примеру кода (описание приведено ниже) обращение к функции trace() для просмотра результатов примера.

4 Для тестирования примера скопируйте код на панель «Действия»; при необходимости добавьте обращение к функции trace() или добавьте значение в текстовое поле, используя его метод appendText().

5 Для создания SWF-файла и просмотра результатов выберите в главном меню команды «Управление»

«Тестировать ролик».

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

• Функция trace(): функция trace() в ActionScript записывает значения любых передаваемых ей параметров (переменных или литеральных выражений) на панель «Вывод». Многие из примеров кода данного руководства уже включают в себя вызов функции trace(), поэтому для этих примеров достаточно всего лишь скопировать код в документ и протестировать проект. Если же требуется использовать функцию trace() для проверки значения переменной в примере кода, который этой функции еще не включает, необходимо добавить в код вызов trace(), передав переменную как параметр. Например, если вам встретился следующий код:

var albumName:String = "Three for the money";

Для тестирования результата примера кода можно скопировать код на панель «Действия», а затем добавить вызов функции trace(), например:

var albumName:String = "Three for the money";

trace("albumName =", albumName);

При запуске программы будет распечатана следующая строка:

albumName = Three for the money Каждый вызов функции trace() может иметь несколько параметров, причем все они соединяются в одну строку при распечатке. Если в конце каждого обращения к функции trace() добавить разрыв строки, результаты обращений к функции trace() будут распечатаны на отдельных строках.

• Текстовое поле в рабочей области: вместо функции trace() можно добавить поле динамического текста в рабочую область (используя инструмент «Текст») и выписать значения в это текстовое поле для просмотра результатов примера кода. Метод appendText() класса TextField можно использовать для добавления значения строки String в конце содержимого текстовых полей. Для доступа к текстовому полю с помощью ActionScript необходимо задать ему имя экземпляра в инспекторе свойств. Например, если текстовое поле имеет имя экземпляра outputText, для проверки значения переменной albumName можно использовать следующий код.

var albumName:String = "Three for the money";

outputText.appendText("albumName = ");

outputText.appendText(albumName);

–  –  –

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

Чтобы перевести текст на новую строку, необходимо добавить символ разделителя строк ("\n"):

outputText.appendText("\n"); // adds a line break to the text field В отличие от функции trace(), метод appendText() может принять только одно значение в качестве параметра. Это значение должно быть строкой (экземпляр String или строковый литерал). Для распечатки значения нестроковой переменной необходимо сначала конвертировать его в значение строки.

Легче всего сделать это, вызвав метод объекта toString():

var albumYear:int = 1999;

outputText.appendText("albumYear = ");

outputText.appendText(albumYear.toString());

Работа с примерами, приведенными в конце главы Эта глава, как и большинство других глав данного руководства, содержит в конце большое количество примеров, которые связывают воедино основные концепции, которые были здесь рассмотрены. Тем не менее, эти примеры, в отличие от приложения Hello World, не содержат пошаговых инструкций. Соответствующий код ActionScript 3.0 для каждого примера будет рассмотрен и обсужден, однако инструкции по запуску и работе в специальных средах разработки не приводятся. Тем не менее, материалы примеров, поставляемые с настоящим руководством, включают все необходимые файлы, позволяющие легко составить и запустить учебные приложения в выбранной среде разработки.

Глава 4. Язык ActionScript и его синтаксис ActionScript 3.

0 включает как язык ядра ActionScript, так и прикладной программный интерфейс Adobe Flash Player. Базовый язык — это часть кода ActionScript, которая определяет синтаксис языка, а также типы данных верхнего уровня. ActionScript 3.0 обеспечивает программный доступ к проигрывателю Flash Player.

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

Обзор языка В основу языка ActionScript 3.0 положены объекты, они являются его главным конструктивным материалом.

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

Программисты, знакомые с объектно-ориентированным программированием в Java или C++, могут воспринимать объекты как модули, включающие два типа: данных, хранимые в соответствующих переменных или свойствах, а также поведение, реализуемое с помощью методов. ActionScript 3.0 определяет объекты подобным образом, но немного по-другому. В ActionScript 3.0 объекты представляют собой просто наборы свойств. Эти свойства выступают в качестве контейнеров, которые могут содержать не только данные, но также функции или другие объекты. Если функция связана с объектом таким образом, она называется методом.

Хотя определение ActionScript 3.0 и может показаться немного странным для имеющего опыт программирования на Java или C++, на практике определение типов объектов с помощью классов ActionScript

3.0 сходно со способом, которым классы определяются в Java или C++. Различие между двумя определениями объектов важно, когда обсуждается объектная модель ActionScript и другие расширенные возможности, но в большинстве других ситуаций термин свойства означает переменные, являющиеся членами класса, как альтернативу методам. В справочнике по языку ActionScript 3.0 и компонентам, например, термин свойства используется для обозначения переменных или свойств getter-setter. Термин методы здесь используется для обозначения функций, являющихся частью класса.

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

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 42

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

В прошлом искушенные программисты ActionScript могли напрямую управлять цепочкой прототипов с помощью специальных встроенных элементов языка. Теперь, когда в языке предлагается более зрелая реализация интерфейса программирования, основанного на классах, многие из этих специальных элементов языка, таких как __proto__ и __resolve, больше не являются частью языка. Кроме того, оптимизация внутреннего механизма наследования, обеспечивающая значительный прирост производительности в Flash Player и Adobe AIR, предотвращает прямой доступ к механизму наследования.

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

ActionScript содержит ряд встроенных классов, являющихся частью языка ядра. Некоторые из этих встроенных классов, например Number, Boolean и String, отражают примитивные значения, доступные в ActionScript. Другие же, такие как классы Array, Math и XML, определяют более сложные объекты.

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

var someObj:Object;

var someObj;

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

var someObj:*;

var someObj;

Переменная без объявления типа отличается от переменной с типом Object. Основным отличием является то, что переменные без объявления типа могут содержать специальное значение undefined, в то время как переменные с типом Object не могут содержать такое значение.

Можно определить свои собственные классы, используя ключевое слово class. Свойства класса можно объявить тремя способами: константы могут быть определены с помощью ключевого слова const, переменные определяются с помощью ключевого слова var, а свойства getter и setter определяются с использованием атрибутов get и set в объявлении метода. Методы можно объявлять с помощью ключевого слова function.

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 43

Язык ActionScript и его синтаксис Экземпляр класса создается с помощью оператора new. В следующем примере создается экземпляр класса Date с названием myBirthday.

var myBirthday:Date = new Date();

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

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

В следующем примере для создания простого пакета, содержащего один класс, используется директива package.

–  –  –

Именем класса в данном случае является SampleCode.

Поскольку класс находится внутри пакета примеров, компилятор автоматически уточняет имя класса во время компиляции, воссоздавая полное имя:

samples.SampleCode. Компилятор также уточняет имена любых свойств или методов, так что имена sampleGreeting и sampleFunction() становятся соответственно samples.SampleCode.sampleGreeting и samples.SampleCode.sampleFunction().

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

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 44

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

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

Также в имена пакетов можно включить встроенные точки, чтобы создать вложенные пакеты. Это позволяет создавать иерархическую структуру пакетов. Хорошим примером служит пакет flash.xml, предоставляемый в рамках ActionScript 3.0. Пакет flash.xml вложен в пакет flash.

Пакет flash.xml содержит старую программу синтаксического анализа XML, которая использовалась в предыдущих версиях ActionScript. Одной из причин, почему эта программа теперь находится в пакете flash.xml, является то, что имя старого класса XML конфликтовало с именем нового класса XML, в котором реализованы функции, соответствующие спецификации XML для ECMAScript (E4X), доступные в ActionScript 3.0.

Хотя перемещение старого класса XML в пакет будет хорошим начальным шагом, большинство пользователей старых классов XML выполнят импорт пакета flash.xml, который создаст тот же самый конфликт имен, если не будет использоваться полностью уточненное имя старого класса XML (flash.xml.XML). Чтобы избежать этой ситуации, старый класс XML теперь называется XMLDocument, как показано в следующем примере.

package flash.xml { class XMLDocument {} class XMLNode {} class XMLSocket {} } Язык ActionScript 3.0 главным образом организован внутри пакета flash. Например, пакет flash.display содержит прикладной программный интерфейс списка отображения, а пакет flash.events содержит новую модель событий.

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

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 45

Язык ActionScript и его синтаксис ActionScript 3.0 обеспечивает более гибкие возможности при объявлении пакетов. В предыдущих версиях ActionScript пакеты всего лишь представляли собой каталоги, в которые помещались исходные файлы, и эти пакеты объявлялись не с помощью инструкции package, а просто имя пакета включалось как часть полного уточненного имени класса в определение класса. Хотя пакеты по-прежнему представляют собой каталоги в ActionScript 3.0, они могут содержать не только классы. В ActionScript 3.0 для объявления пакета используется инструкция package, что означает, что также можно объявлять переменные, функции и пространства имен на верхнем уровне пакета. На верхнем уровне пакета также можно добавлять выполняемые инструкции. Если на верхнем уровне пакета объявляются переменные, функции или пространства имен, то единственными атрибутами, доступными на этом уровне, являются public и internal. Только одно объявление пакета в файле может использовать атрибут public, независимо от того, объявляется ли при этом класс, переменная, функция или пространство имен.

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

Импорт пакетов Если требуется использовать класс, находящийся внутри пакета, необходимо выполнить импорт либо этого пакета, либо определенного класса. Это отличается от технологии, используемой в ActionScript 2.0, где импорт классов был необязателен.

Например, рассмотрите пример класса SampleCode, приведенный ранее в этой главе. Если класс находится в пакете с именем samples, необходимо использовать одну из следующих инструкций import, прежде чем использовать класс SampleCode.

import samples.*;

или import samples.SampleCode;

В целом инструкции import должны быть максимально конкретизированы. Если планируется использовать только класс SampleCode из пакета samples, необходимо импортировать только класс SampleCode, но не весь пакет, к которому он принадлежит. Импорт всего пакета может привести к неожиданным конфликтам имен.

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

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

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

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

var mySample:samples.SampleCode = new samples.SampleCode();

ПРОГРАММИРОВАНИЕ НА ACTIONSCRIPT 3.0 В FLASH 46

Язык ActionScript и его синтаксис По мере увеличения уровней вложенности пакетов читаемость такого программного кода снижается.

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

var mySample:SampleCode = new SampleCode();

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

Если создается пакет, спецификатор доступа по умолчанию для всех членов этого пакета установлен как internal, и это означает, что по умолчанию члены пакета видны только другим членам этого пакета. Если требуется, чтобы класс был доступен для программного кода вне пакета, необходимо объявить этот класс как public. Например, в следующем пакете содержатся два класса, SampleCode и CodeFormatter.

// SampleCode.as file package samples { public class SampleCode {} } // CodeFormatter.as file package samples { class CodeFormatter {} } Класс SampleCode виден вне пакета, потому что он объявлен как класс public. Класс CodeFormatter, в то же время, видим только внутри самого пакета samples. При попытке обращения к классу CodeFormatter извне пакета samples появится сообщение об ошибке, как показано в следующем примере.

import samples.SampleCode;

import samples.CodeFormatter;

var mySample:SampleCode = new SampleCode(); // okay, public class var myFormatter:CodeFormatter = new CodeFormatter(); // error Если требуется, чтобы оба класса были доступны за пределами пакета, необходимо объявить оба этих класса как public. Нельзя применить атрибут public при объявлении пакета.

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

package langref.samples { public class SampleCode {} }

–  –  –

Компилятор не сможет распознать, какой класс SampleCode использовать. Чтобы разрешить этот конфликт, необходимо использовать полностью уточненное имя.

var sample1:samples.SampleCode = new samples.SampleCode();

var sample2:langref.samples.SampleCode = new langref.samples.SampleCode();

Примечание. Программисты со стажем работы на C++ часто путают инструкцию import с #include.

Директива #include необходима в C++, поскольку компиляторы этого языка одновременно обрабатывают только один файл и не будут заглядывать в другие файлы в поисках определений классов, пока явно не включен файл заголовка. В ActionScript 3.0 также есть директива include, но она не предназначена для импорта классов и пакетов. Для импорта классов и пакетов в ActionScript 3.0 необходимо использовать инструкцию import и помещать исходный файл, содержащий пакет, в подкаталог классов.

Пространства имен Пространства имен позволяют управлять доступностью создаваемых свойств и методов. Можно рассматривать спецификаторы управления доступом public, private, protected и internal как встроенные пространства имен. Если эти предварительно определенные спецификаторы управления доступом не соответствуют имеющимся требованиям, можно создать собственные пространства имен.

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



Pages:   || 2 | 3 | 4 | 5 |   ...   | 13 |
Похожие работы:

«Российская академия наук ИНСТИТУТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ Информационно-вычислительная система вариационной ассимиляции данных измерений ИВС-T2 Агошков В.И., Ботвиновский Е.А., Гусев А.В., Кочуров А.Г., Лебедев С.А., Парм...»

«Всеволод Несвижский Санкт-Петербург "БХВ-Петербург" УДК 681.3.068 ББК 32.973.26-018.1 Н55 Несвижский В. Н55 Программирование аппаратных средств в Windows. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2008. — 528 с.: ил. + CD-ROM — (Профессиональное программирование) ISBN 978-5-9775-0263-4 Книга посвящ...»

«Санкт-Петербургский государственный университет Кафедра Системного Программирования Болотов Сергей Сергеевич Разработка компилятора для языка РуСи на платформу MIPS Бакалаврская работа Научный руководитель...»

«Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Владимирский государственный университет В.Н. ГОРЛОВ, Н.И. ЕРКОВА МЕТОДЫ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ ДЛЯ ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ. АЛГОРИТМЫ И ПРОГРАММЫ Учебное пособие Владимир 2009 УДК 519.6 ББК 22.19...»

«Оселедец Иван Валерьевич УДК 519.6 Нелинейные аппроксимации матриц 01.01.07 Вычислительная математика ДИССЕРТАЦИЯ На соискание учёной степени кандидата физико-математических наук Научный руководитель чл.-корр. РАН, проф. Тыртышников Е. Е. Москва 2007 Содержание Введение 2 i.1 Нелинейные аппроксимации...»

«Санкт-Петербургский государственный университет Кафедра математической теории игр и статистических решений Феофанов Василий Алексеевич Выпускная квалификационная работа бакалавра Дискриминантный анализ базы данных Направление 010400 Прикладная математика, фундаментальная информатика и программирование Научный...»

«ЭЛЕКТРОКИНЕТИЧЕСКИЕ ЯВЛЕНИЯ ПРИ ВОЗДЕЙСТВИИ УЛЬТРАЗВУКА НА ЖИДКИЕ СРЕДЫ В.Л. Ланин Белорусский государственный университет информатики и радиоэлектроники, ул. П. Бровки, 6, г. Минск, 220013, Республика Беларусь, vlani...»

«Информатика, вычислительная техника и инженерное образование. – 2012. № 2 (9) Раздел I. Эволюционное моделирование, генетические и бионические алгоритмы УДК 004.896 Д.В. Заруба, Д.Ю. Запорожец, Ю.А. Кравченко ИСПОЛЬЗОВАНИЕ МЕТОДОВ ЭВОЛЮЦИОННОЙ ОПТИМИЗАЦИИ ДЛЯ РЕШЕ...»

«Применение параллельных алгоритмов для решения системы линейных алгебраических уравнений с ленточной матрицей итерационными методами на кластерной системе Демешко И.П., Акимова Е.Н., Коновалов А.В. Представлены результаты применения параллельных итерационных алгоритмов реше...»

«ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ И КОМПЛЕКСЫ УДК 519.6 В.И. Агошков, М.В. Ассовский, С.В. Гиниатулин, Н.Б. Захарова, Г.В. Куимов, И.Е. Пармузин, В.В. Фомин Институт вычислительной математики Российской академии наук, г. Москва ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА ВАРИАЦИОННОЙ АССИМИЛЯЦИИ ДАННЫХ НАБЛЮДЕНИЙ ИВС "ИВМ РАН – ЧЕРНОЕ МОРЕ" В н...»

«Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича...»

«1 Открытый урок по математике в 5 классе по теме: Деление десятичных дробей на натуральные числа Тема: "Деление десятичных дробей на натуральные числа"Цели: 1. Продолжить работу над формирова...»

«УДК 620.19 : 622.83 ФИЗИЧЕСКИЕ И МЕТОДОЛОГИЧЕСКИЕ АСПЕКТЫ АКУСТОЭМИССИОННОГО КОНТРОЛЯ НАПРЯЖЕННО-ДЕФОРМИРОВАННОГО СОСТОЯНИЯ МАССИВА ГОРНЫХ ПОРОД Аркадий Васильевич Леонтьев Федеральное государственное бю...»

«Муниципальное бюджетное общеобразовательное учреждение средняя общеобразовательная школа №10 с углубленным изучением отдельных предметов Щёлковского муниципального района Московской области УТВЕРЖДАЮ Директор МБОУ СОШ №10 с УИОП ЩМР МО _ Е.В.Метрик "" _2015г. Рабочая программа по информатике 8-Б класса (б...»

«1 Министерство образования Республики Беларусь Учреждение образования "БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ" Филиал кафедры электронной техники и технологии на НПО "Интеграл" ТЕХНОЛОГИЯ ИНТЕГРАЛЬНОЙ ЭЛЕКТРОНИКИ для студентов специальностей: “Проектирование и производство РЭС”, “Эл...»

«ПРАВИТЕЛЬСТВО МОСКВЫ ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ г. МОСКВЫ СЕВЕРО-ЗАПАДНОЕ ОКРУЖНОЕ УПРАВЛЕНИЕ ОБРАЗОВАНИЯ ГОУ СОШ № 1298 125466, г. Москва, ул. Юровская, д. 97, тел./факс: 8-499-501-28-92 (94) www.school12...»

«4 МЕТОДИКА КУРСОВОГО ПРОЕКТИРОВАНИЯ ПО ДИСЦИПЛИНЕ "АРХИТЕКТУРА КОМПЬЮТЕРОВ И ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ" (на примере операции умножения) 4.1 Кодирование чисел 4.1.1 Кодирование знака числа. Кодирование чисел позвол...»

«5. Программирование 1.Для программирования параметров войдите в сервисный режим. Для этого после набора [0] [0] [0] [0] [0] [0] подождите, пока не погаснет светодиод(5сек), далее наберите мастер-к...»

«ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Е. В. Баранова, профессор кафедры информатики И. К. Елизарова, программист учебно-методического управления ИНФОРМАЦИОННОЕ СОПРОВОЖДЕНИЕ ИНДИВИДУАЛЬНО-ОРИЕНТИРОВАННОГО УЧЕБНОГО ПРОЦЕССА Индивидуально-ориентированная организация учебного процесса предполагает возможность оперативного доступа ст...»

«Федеральное агентство связи Федеральное государственное бюджетное образовательное учреждение высшего образования "Сибирский государственный университет телекоммуникаций и информатики" (СибГУТИ) Кафедра Вычислительных систем Допустить к защите Зав.каф. _Мамойленко С.Н. ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА МАГИСТРА Исследование...»








 
2017 www.lib.knigi-x.ru - «Бесплатная электронная библиотека - электронные матриалы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.