Прозрачность и видимость клипа

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

Свойство _alpha
Для программного изменения прозрачности клипа в ActionScript используется специальное свойство _а1рпа. Например:

_root._alpha=0; // Фильм станет невидимым

Значение прозрачности задается в процентах. Величина _alpha, равная 100 %, соответствует полностью непрозрачному клипу. Если же свойство _alpha равно 0, то клип будет полностью прозрачен (проще говоря, он станет невидимым).

Свойству _alpha можно присвоить значение, выходящее за интервал 0—100 %. При этом отрицательные величины прозрачности будут восприниматься как 0, а значения, большие 100, — как 100 %. Однако это справедливо лишь в том случае, если клип не содержит прозрачных элементов.

Если в клип, свойство _alpha которого равно 100 %, вложить прозрачный объект, то его прозрачность сохранится. При уменьшении же значения _alpha клипа до N% прозрачность вложенного объекта увеличится на 100-N. Поэтому свойство _alpha задает не прозрачность объектов внутренней структуры клипа, а ее смещение по сравнению с первоначальным значением. А это означает, что если в клипе имеется объект с прозрачностью в 50 %, то для того, чтобы сделать его непрозрачным, свойству _alpha нужно присвоить значение 200 %.


Наоборот, для того чтобы он стал полностью прозрачным, проницаемость клипа достаточно увеличить всего на 50%.

Интересная особенность свойства _alpha заключается в том, что возвращаемое им значение может достаточно сильно отличаться от присвоенного:

_alpha=78;
trace(_alpha); // Выводит: 77.734375

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

В ActionScript можно задавать байтовое значение прозрачности клипа и напрямую. Для этого нужно воспользоваться методом setTransform() класса Color. Например:

(new Color(_root)).setTrasform({ab:-255}); // аналогично _root._alpha=0

Изменение прозрачности никак не влияет на другие характеристики клипа. Это означает, что полностью прозрачный клип, будучи невидимым, продолжает вести себя точно так же, как если бы его свойство _alpha равнялось 100 %. Он будет «слышать» команды кода, воспринимать все события и (что является наиболее частым источником сбоев) закрывать собой другие клипы и кнопки.

Чтобы невидимый клип в меньшей степени проявлял свое присутствие, необходимо задействовать не свойство _alpha, а свойство _visible,

Свойство _visible
Свойство _visible позволяет включать и выключать отображение клипа.


В качестве значения оно принимает булеву величину — true (клип показывается) или false (клип скрыт). По умолчанию для всех клипов свойство _visible хранит true.

Скрытые при помощи свойства _visible клипы могут принимать команды от скрипта, они «слушают» встроенные события, и на их временной диаграмме происходит смена кадров. Однако все эти действия осуществляются как бы заочно, без явного рисования графических элементов клипа. Если же клип делается невидимым при помощи свойства _alpha, то каждый новый кадр он перерисовывается как ни в чем не бывало. В этом заключается одно из преимуществ свойства _visible: его использование позволяет экономить машинные ресурсы, а следовательно, и повышать эффективность воспроизведения фильма.

Второе отличие отключения отображения клипа при помощи свойства _visible по сравнению с _alpha состоит в следующем. При использовании _visible клип перестает реагировать на такие «кнопочные» события, как onRelease, onPress и т. д. На него становится невозможно навести фокус, и он исключается из списка объектов, которые можно обойти, нажимая + . В общем, все проявления «кнопочного» поведения клипа отключаются. А это означает, что если под неотображаемым клипом располагается другой клип или кнопка, то они становятся доступными для «кнопочных» событий.


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

Все методы класса MovieClip могут быть применены к клипу, отображение которого отключено.

Это, например, означает, что метод hiiTest() подтвердит пересечение клипов, даже если один из них является скрытым.

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

Статьи из раздела Action Script на эту тему:
Виртуальные слои клипов
Задание формулы цвета
Имена экземпляров клипов
Импорт внешних фильмов и изображений
Клипы как носители кода

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