Чтение онлайн

на главную - закладки

Жанры

Macromedia Flash Professional 8. Графика и анимация

Дронов В. А.

Шрифт:

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

<Клип>.lineStyle([<Толщина линии>, [<Цвет линии>,

[<Прозра чность линии>]]]);

Толщина линии задается в пикселах, от 0 до 255. Если она не задана, то линия нарисована не будет. Цвет линии задается в формате 0xRRGGBB, где RR — доля красного

цвета, GG — зеленого и ВВ — синего соответственно. Пример задания цвета: 0x22FF44. Прозрачность линии может принимать значения от 0 (полная прозрачность) до 100 (полная непрозрачность).

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

Поэтому сценарий, рисующий треугольник, нам придется переписать:

with (_root.paintBox) {

lineStyle(2, 0x000000);

moveTo(100, 200);

lineTo (300, 200);

lineTo(200, 100);

lineTo (100, 200);

}

Здесь мы с помощью метода linestyle задали стиль линии: толщина в 2 пиксела и черный цвет. После этого треугольник уж точно будет нарисован.

А теперь давайте посмотрим на только что нарисованный треугольник и подумаем: чего же в нем не хватает? В главе 3 мы выяснили, что, если нарисовать замкнутую фигуру, Flash автоматически создаст заливку; при этом не имеет значения, какой инструмент рисования использовался. Здесь же заливки нет. Почему?

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

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

Формат вызова метода beginFill такой:

<Клип>.beginFill([<Цвет заливки>, [<Прозрачность заливки>]]);

Цвет заливки задается в том же формате 0xRRGGBB, а прозрачность — значением от 0 до 100. Если эти параметры не заданы, будут использованы текущие значения цвета и прозрачности заливки — те, что были указаны при предыдущем вызове метода beginFill. Поэтому при самом первом вызове этого метода нужно указать оба его параметра.

Метод endFill не принимает ни одного параметра:

<Клип>.endFill;

Теперь еще раз перепишем сценарий, чтобы он рисовал треугольник с заливкой:

with (_root.paintBox) {

lineStyle(2, 0x000000);

beginFill(0x222233, 100);

moveTo(100, 200);

lineTo(300, 200);

lineTo (200, 100);

lineTo(100, 200);

endFill ;

}

С

помощью метода beginFill создается обычная, сплошная заливка. Если же нужно создать градиентную заливку, то придется воспользоваться методом beginGradientFill в паре с методом endFill. Полное описание этого метода приведено в интерактивной справке Flash.

Чтобы удалить все, что было нарисовано программно, нужно вызвать метод clear:

_root.paintBox.clear;

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

Пример сценария, рисующего график функции

А теперь давайте попрактикуемся и напишем сценарий, рисующий график функции f(x) = х2. Это, скорее, курьез, чем реально необходимый пример, но он поможет нам глубже изучить методы рисования объекта movieClip.

Сначала создадим новый документ Flash. И привяжем к единственному кадру анимации следующий сценарий:

var dx = 200;

// Величина отступа от левого края рабочего листа

var х = 0;

var у = 0;

// Временные переменные

// Каждая точка графика будет представлять собой небольшой квадрат с

// черной заливкой

lineStyle(1, 0x000000);

// Стиль линий контура этого квадрата

for(х = -20; х < 21; х++) {

// Используем цикл со счетчиком, чтобы вычислить значения функции

// для аргументов в пределах от -20 до 20

у = х * х;

// Вычисляем значение функции

beginFill(0x000000);

// Начинаем рисование заливки квадрата

// Рисуем квадрат

endFill ;

// Заканчиваем рисование заливки

}

Теперь запустим на воспроизведение готовый фильм в отдельном окне. Работает!

Правда, график наш рисуется вверх ногами. Чтобы исправить этот огрех, перепишем наш сценарий. Теперь он будет выглядеть вот так (добавленный и измененный код выделен полужирным шрифтом):

var dx = 200;

dy = 400;

// Величина отступа от верхнего края рабочего листа

var х = 0;

var у = 0;

lineStyle(1, 0x000000);

for(х = -20; х < 21; х++) {

у = х * х;

beginFill(0x000000);

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(<Клип-маска>);

Поделиться:
Популярные книги

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Леди для короля. Оборотная сторона короны

Воронцова Александра
3. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Леди для короля. Оборотная сторона короны

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Невест так много. Дилогия

Завойчинская Милена
Невест так много
Любовные романы:
любовно-фантастические романы
7.62
рейтинг книги
Невест так много. Дилогия

Идеальный мир для Социопата 3

Сапфир Олег
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Идеальный мир для Социопата 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Крещение огнем

Сапковский Анджей
5. Ведьмак
Фантастика:
фэнтези
9.40
рейтинг книги
Крещение огнем

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая