beginFill(0×000000);
// Начинаем рисование заливки квадрата
// Рисуем квадрат
endFill ();
// Заканчиваем рисование заливки
}
Теперь запустим на воспроизведение готовый фильм в отдельном окне. Работает!
Правда, график наш рисуется вверх ногами. Чтобы исправить этот огрех, перепишем наш сценарий. Теперь он будет выглядеть вот так (добавленный и измененный код выделен полужирным шрифтом):
var dx = 200;
dy = 400;
// Величина отступа от верхнего края рабочего листа
var х = 0;
var у = 0;
lineStyle(1, 0×000000);
for(х = -20; х < 21; х++) {
у = х * х;
beginFill(0×000000);
moveTo(dx + х — 1, dy — у + 1);
lineTo(dx + x + 1, dy — у + 1);
lineTo(dx + x + 1, dy — у — 1);
lineTo(dx + х — 1, dy — у — 1);
lineTo(dx + x — 1, dy — у + 1);
endFill ();
}
После этих изменений наш график будет нарисован нормально.
Программное управление масками
А теперь выясним, что можно сделать с масками, используя методы объекта movieClip .
Чтобы маскировать вложенный клип другим клипом (который будет превращен в маскирующий), используется метод setMask :
<���Маскируемый клип>. setMask (<���Клип-маска >);
Самое интересное заключается в том, что оба клипа совсем не обязательно должны находиться в разных слоях (о слоях см. главу 5, о маскирующих слоях — главу 14). Кроме того, и маскирующий, и маскируемый клипы могут содержать сложную анимацию и даже двигаться. Ух, каких чудес можно натворить!
Давайте создадим новый документ Flash, поместим на рабочий лист клип, содержащий любое растровое изображение, а на него наложим клип с какой-либо простой геометрической фигурой. Назовем нижний клип masked , а верхний — mask . После этого привяжем к единственному кадру анимации такой вот сценарий:
masked.setMask(mask);
mask.startDrag(true);
Первое выражение этого сценария маскирует клип-растровое изображение masked клипом mask . Второе выражение заставляет клип mask (т. е. маску) перемещаться вслед за курсором мыши.
Теперь запустим на воспроизведение созданный фильм в отдельном окне и начнем перемещать курсор мыши с места на место. Забавно получилось, не правда ли?
Кстати, маски, созданные путем вызова метода setMask , имеют приоритет над масками, созданными вручную. Иными словами, если мы создадим маскирующий слой с клипом-маской mask и замаскируем им другой клип masked , то выражение:
mask.setMask(masked);
сделает клип masked маской, а клип mask — маскируемым.
Маскируемый клип в данный момент времени может иметь только одну маску. Так, если для клипа masked вызвать метод setMask еще раз, но передать ему в качестве параметра клип mask2 , то он станет новой маской для masked , а предыдущая маска mask "уйдет в отставку".
Чтобы убрать маску совсем, достаточно вызвать метод setMask с параметром null :
masked.setMask(null);
А теперь поговорим о кнопках и работе с ними с помощью сценариев. (Подробнее о кнопках см. главу 18 .)
Все находящиеся на рабочем листе кнопки, для которых было задано имя, представляют собой экземпляры объекта Button . Их создает сам Flash; нам же остается только использовать их свойства и методы.
Оператор typeof для кнопки возвращает строку "object" — это значит, что кнопка относится к объектному типу данных.
Свойства и методы объекта Button
По своим свойствам и методам объект Button во многом похож на объект movieclip . Имея весьма схожие наборы свойств и методов, эти два объекта зачастую ведут себя одинаково. В частности, объект Button поддерживает свойства х, _у, _xmouse, _ymouse, _height, _width, _alpha и _rotation , уже знакомые нам по объекту movieClip . Однако объект Button не поддерживает методы play, stop, gotoAndPiay, gotoAndStop и подобные им, так как назначение его все же иное, чем у объекта movieclip . Так что кнопку можно рассматривать как очень специализированный, "урезанный" вариант клипа.
Рассмотрим специфические свойства объекта Button , которые обязательно пригодятся нам в работе с его экземплярами. (Кстати, многие из этих свойств поддерживаются и объектом movieclip , но редко используются в клипах.)
Читать дальше
Конец ознакомительного отрывка
Купить книгу