В этом уроке мы научимся рисовать различные графические примитивы - линии, кривые и заливки
- средствами ActionScript. Предполагается, что вы уже немого знакомы с этим
языком и вам не нужно объяснять его основы. Если вы новичок в ActionScript, посмотрите
другие статьи, в частности Введение в ActionScript.
Для рисования примитивов нам потребуются следующии функции объекта MovieClip:
Начнем с функций moveTo() и lineTo(). Они используются для рисования
линий. moveTo() устанавливает позицию "карандаша" (курсора) в позицию x, y. lineTo()
проводит линию от позиции, установленной moveTo(), до позиции указанной параметрами x, y
в самой функции lineTo().
Но, прежде чем рисовать линии этими функциями, нужно установить свойства линии функцией
lineStyle(). У неё три необязательных параметра: thickness - указывает толщину линии;
rgb - цвет (а-ля 0x56FFCC); alpha - значение прозрачности.
Если параметр не указан, его значение считается равным нулю.
Вот пример кода, который рисует синий квадрат в текущем объекте MovieClip:
Координатная решетка любого объекта типа MovieClip начинается с верхнего левого угла и
растет вправо вниз, как видно на рисунке выше.
Для закраски нарисованных фигур используются функции beginFill() и endFill(). Функцию
beginGradientFill() для создания градиентной закраски мы рассмотрим позже.
beginFill() включает режим закраски. После её вызова, все нарисованные контуры будут закрашиваться,
образую замкнутые фигуры. beginFill() имеет два необязательных параметра: rgb указывает цвет
закраски, alpha - прозрачность.
endFill() отключает режим закраски.
Рекомендуется для рисовательной деятельности создавать пустой объект при помощи
функции createEmptyMovieClip(). Этой функции передаются два параметра:
имя экземпляра клипа, и целое значение, указывающее глубину клипа на экране, относительно
других клипов.
Вот пример c использованием функций beginFill() и endFill():
Рассмотрим функцию, которая рисует кривые: curveTo(controlX, controlY, anchorX, anchorY). Функция имеет
четыре обязательных параметра. При отсутствии хотя бы одного из них она не срабатывает.
Началом кривой считается текущая позиция курсора ("карандаша"), которая устанавливается при помощи moveTo(), или же
позицией, в которой закончили черчение функции lineTo() или curveTo().
Конец кривой указывается параметрами anchorX и anchorY.
Параметры controlX и controlY указывают точку, к которой направлены начало и конец линии.
Для наглядности на рисунке ниже обозначены все точки.
Вот пример кода, и рисунка, который получается в результате его исполнения:
Наконец, рассмотрим самую сложную функцию beginGradientFill (fillType, colors, alphas, ratios, matrix),
которая служит для градиентной закраски.
Параметр fillType указывает тип закраски может быть равен одной из следующих строк:
"linear" - линейная, "radial" - радиальная. Не забудьте,
что это строки, поэтому параметры нужно указывать в кавычках.
Следующие четыре параметра представляют из себя массивы, каждый из которых мы
сейчас рассмотри подробнее.
colors - массив, содержащий цвета градиента.
alphas содержит alphа-канал (прозрачность) каждого цвета.
ratios содержит значения распределения цветов. Возможные значения: 0-255.
Это значение указывает место в процентном соотношении, где значение цвета достигает максимума.
matrix является матрицей преобразования, которая может описываться двумя наборами значений:
a, b, c, d, e, f, g, h, i, которые представляют из себя матрицу типа
a
b
c
d
e
f
g
h
i
или matrixType, x, y, w, h, r, где matrixType - строка "box";
x и y - смещение центра градиента, относительно точки регистрации
объекта; w и h - ширина и высота градиента соответственно;
r - угол поворота градиента в радианах.
Для обращения к свойствам объекта можно использовать инструкцию with(). Вот пример, в котором
мы создаём классическую "хромовую" закраску, повёрнутую на 45 градусов.
_root.createEmptyMovieClip( "myClip", 1 );
with ( _root.myClip )
{
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...