logo
43121

Глава 19. Создание приложений Flash

Знаете ли вы, что отличает простой интерактивный фильм от полноценного приложения Flash? Правильно, наличие пользовательского интерфейса!

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

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

Итак, какие же средства предоставляет Flash создателям приложений? Давайте их перечислим и кратко рассмотрим.

Кнопки. Это экземпляры образцов-кнопок, впервые упомянутые в главе 10. Образцы-кнопки не очень отличаются от образцов-клипов, за несколькими исключениями, обусловленными самой их "интерфейсной" природой. Кнопки позволяют привязать обработчики к событию press (щелчок на кнопке) и некоторым другим.

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

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

Пользовательские элементы управления. Это новые элементы управления, не встроенные во Flash, а разработанные вами. Для создания пользовательских элементов управления вы должны использовать встроенные клипы. Как это делается, мы рассмотрим в конце данной главы.

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

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

Кнопки

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

Создание кнопок

Чтобы создать образец-кнопку, сделайте следующее. Выберите пункт New Symbol в меню Insert или нажмите комбинацию клавиш <Ctrl>+<F8>. Если у вас открыто окно библиотеки, вы также можете выбрать пункт New Symbol в дополнительном меню этого ок,.а или нажать кнопку, показанную на рис. 10.4, эта кнопка находится в нижнем левом углу окна библиотеки. На экране появится диалоговое окно Create New Symbol, показанное на

Объект Button

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

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

Во многом объект Button похож на объект -novieciip. Эти два объекта имеют весьма схожий набор свойств и методов и зачастую ведут себя одинаково. В частности, объект Button поддерживает свойства _х, _у, xmouse, ymouse, _height, _width, _alpha И _rotation, уже знакомые вам ПО объекту movieciip. Однако объект Button не поддерживает методы play, stop, gotoAndPiay, gotoAndstop и подобные им, т. к. назначение его все же иное, чем у объекта movieciip. Так что вы можете рассматривать кнопку как сильно специализированный, "урезанный" вариант клипа.

Ниже будут рассмотрены свойства, которые обязательно пригодятся вам в работе с экземплярами объекта Button. (Многие из них поддерживаются и объектом movieciip.)

Свойство enabled позволяет разрешить или запретить доступ пользователя к кнопке. Оно имеет логический тип: значение true разрешает доступ к кнопке, а значение false - запрещает.

Свойство visiо позволяет сделать кнопку видимой или невидимой. Оно имеет логический тип: значение true делает кнопку видимой, а значение false - невидимой.

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

Свойство tabindex задает порядок обхода элементов управления при последовательных нажатиях клавиши <ТаЬ>. (При нажатии комбинации клавиш

<Shift>+<Tab> обход выполняется в обратном направлении.) Значением этого свойства может быть любое целое неотрицательное число, оно задает порядок в очереди элементов управления. Так, сначала фокус ввода переместится на элемент управления со значением порядка обхода - 0, потом - со значением 1 и т. д.

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

Свойство tabEnabled позволяет убрать кнопку (и вообще любой элемент управления) из порядка обхода, сделать его недоступным для выбора с клавиатуры, но все же доступным для выбора мышью. Это свойство имеет логический тип: значение true или undefined делает элемент управления доступным для выбора с клавиатуры, а значение false - недоступным.

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

Форматирование текста

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

Управление форматированием текста осуществляется с помощью объекта TextFormat. Он содержит ряд свойств, с помощью которых и задаются параметры форматирования текста.

Объект Selection

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

С помощью объекта selection вы можете получить позицию текстового курсора в поле ввода. Для этого вам нужно воспользоваться методом getcaretindex. Если же ни одно поле ввода не имеет фокуса, возвращается -1.

Методы getBeginindex и getEndindex возвращают номера соответственно начального и конечного символа выделенного фрагмента текста. Если ничего не выделено, опять же возвращается -1.

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

Selection.setselection(10, 30);

Вы также можете просто поставить текстовый курсор в требуемую позицию, передав методу setseiection номер нужного символа и в первом, и во втором параметре:

Selection.setselection(10, 10);

Метод getFocus возвращает имя переменной, привязанной к полю ввода, имеющему в данный момент фокус ввода. Если ни одно поле ввода не имеет фокуса, возвращается null.

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

Selection.setFocus("Name");

Selection.setFocus("_root.id");

Точно таким же образом вы можете дать фокус ввода кнопке, передав этому методу путь кнопки:

Selection.setFocus("_root.btnOK");

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

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

Элементы управления

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

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

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