Клипы как кнопки

Одним из важнейших нововведений Flash MX стала возможность использования клипов в качестве кнопок. Теперь все события и свойства класса Button присущи также и классу MovieClip. Сами же кнопки вполне можно считать обычными клипами, у которых были урезаны все возможности, прямо не относящиеся к их назначению.

У кнопок есть некоторые особенности, которых нет у клипов. Например, при наведении на кнопку указателя мыши он принимает форму руки. По умолчанию кнопки могут помещаться в фокус, а клипы — нет. Для кнопок характерны режимы Over и Down, а также активная область, что, естественно, не присуще клипам. Поэтому чтобы, с одной стороны, кнопки вели себя одинаково, независимо оттого, к какому классу они относятся, а с другой — различия между клипами и кнопками были сохранены, введено понятие клипа-кнопки. Клип-кнопка — это клип, у которого имеется обработчик хотя бы одного «кнопочного» события. Если это условие соблюдается, то поведение клипа резко меняется, приобретая характерные для кнопок черты.

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


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

У любой кнопки имеются режимы Up, Over, Down, обозначающие ее состояние. Режиму Up соответствует кадр, хранящий стандартное изображение кнопки. Режим Over активизируется при наведении на кнопку указателя мыши. Режим Down — это кадр, отображаемый при нажатии кнопки.

Чтобы у клипа-кнопки происходила такая же смена режимов, как и у обычной кнопки, на кадры, их задающие, должны быть «повешены» специальные метки: _up, _over, _down. В тот момент, когда текущий режим должен быть заменен другим, плейер проверит, имеется ли необходимая метка. Если она есть, проигрывающая головка будет переведена на обозначаемый ею кадр и остановлена.

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

До тех пор пока не сработает одно из «кнопочных» событий, клип-кнопка будет проигрываться как обычный клип. Это означает, что режимы кнопки будут непрерывно сменять друг друга. Чтобы этого не происходило, воспроизведение клипа-кнопки, как только он появится на временной диаграмме, должно быть остановлено при помощи метода stop().

Помимо режимов Up, Over, Down, любой кнопке присуща активная область.


По умолчанию в качестве активной зоны клипа-кнопки используются объекты проигрываемого в данный момент кадра. Это не всегда удобно и, кроме того, может приводить к сбоям. Например, если точка, в которой расположен указатель мыши, заполнена в кадре _up и пуста в кадре _over, то данные режимы будут сменять друг друга с высокой частотой в бесконечном цикле (подумайте почему). Поэтому гораздо более технично задавать активную область клипа-кнопки явно. Сделать это можно при помощи специального свойства hitArea.

В качестве значения свойство hitArea принимает ссылку на клип, который должен использоваться как активная зона. В отличие от объектов кадра Hit временной диаграммы кнопок, он не становится невидимым. Если необходимо, чтобы он не отображался, присвойте его свойству _visible величину false.

Клип, применяемый в качестве активной зоны, может иметь сколь угодно сложную структуру и располагаться на любой временной диаграмме. Он даже сам может быть клипом-кнопкой с собственной активной зоной. Единственное ограничение связано с тем, что в клип, задающий активную область, не может быть вложен соответствующий клип-кнопка.

Использование клипов-кнопок имеет существенное преимущество по сравнению с применением обычных кнопок класса Button — вы можете использовать все многообразие возможностей клипов, аналогов которым у обычных кнопок нет.


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

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Отключение кнопок
Режим элемента меню
События кнопок
Управление кнопками при помощи клавиатуры

Вернуться в раздел: Action Script / 11. Кнопки