Home
Главная
Forums
Форум
Your Account
Ваш аккаунт
Web-технологии
HTML, XML, DHTML
JavaScript
SQL
PHP
Perl
SSI
ASP
CSS

Графика
Adobe PhotoShop
Adobe PhotoShop - 2
Macromedia Flash

Компьютеры
Hardware
Мобильные технологии
КПК и ноутбуки

Операционные системы
Unix/Linux
Windows 9x
Windows XP

Стоит посмотреть








  • Рисование с помощью ActionScript во Flash MX

    В этом уроке мы научимся рисовать различные графические примитивы - линии, кривые и заливки - средствами ActionScript. Предполагается, что вы уже немого знакомы с этим языком и вам не нужно объяснять его основы. Если вы новичок в ActionScript, посмотрите другие статьи, в частности Введение в ActionScript.

    Для рисования примитивов нам потребуются следующии функции объекта MovieClip:

    • beginFill ([rgb[, alpha]])
    • beginGradientFill (fillType, colors, alphas, ratios, matrix)
    • clear()
    • curveTo (controlX, controlY, anchorX, anchorY)
    • endFill()
    • lineStyle ([thickness[, rgb[, alpha]]])
    • lineTo (x, y)
    • moveTo (x, y)

    Начнем с функций moveTo() и lineTo(). Они используются для рисования линий. moveTo() устанавливает позицию "карандаша" (курсора) в позицию x, y. lineTo() проводит линию от позиции, установленной moveTo(), до позиции указанной параметрами x, y в самой функции lineTo().

    Но, прежде чем рисовать линии этими функциями, нужно установить свойства линии функцией lineStyle(). У неё три необязательных параметра: thickness - указывает толщину линии; rgb - цвет (а-ля 0x56FFCC); alpha - значение прозрачности. Если параметр не указан, его значение считается равным нулю.

    Вот пример кода, который рисует синий квадрат в текущем объекте MovieClip:

    lineStyle(1, 0x0000FF);
    moveTo(100, 100);
    lineTo(200, 100);
    lineTo(200, 200);
    lineTo(100, 200);
    lineTo(100, 100);

    Рисование с помощью ActionScript во Flash MX

    Координатная решетка любого объекта типа MovieClip начинается с верхнего левого угла и растет вправо вниз, как видно на рисунке выше.

    Для закраски нарисованных фигур используются функции beginFill() и endFill(). Функцию beginGradientFill() для создания градиентной закраски мы рассмотрим позже.

    beginFill() включает режим закраски. После её вызова, все нарисованные контуры будут закрашиваться, образую замкнутые фигуры. beginFill() имеет два необязательных параметра: rgb указывает цвет закраски, alpha - прозрачность.

    endFill() отключает режим закраски.

    Рекомендуется для рисовательной деятельности создавать пустой объект при помощи функции createEmptyMovieClip(). Этой функции передаются два параметра: имя экземпляра клипа, и целое значение, указывающее глубину клипа на экране, относительно других клипов.

    Вот пример c использованием функций beginFill() и endFill():

    _root.createEmptyMovieClip("myClip", 1);

    myClip.lineStyle(2,0x234567);
    myClip.beginFill(0x7878FF);
    myClip.moveTo(70,20);
    myClip.lineTo(20,100);
    myClip.lineTo(120,100);
    myClip.lineTo(70,20);
    myClip.endFill();

    myClip.lineStyle(4, 0x0078DD);
    myClip.moveTo(140,20);
    myClip.lineTo(190,20);
    myClip.lineTo(190,70);
    myClip.lineTo(140,70);
    myClip.lineTo(140,20);

    myClip.beginFill(0x00FF00, 30);
    myClip.lineStyle(1, 0xDC2323);
    myClip.moveTo(230, 20);
    myClip.lineTo(350, 100);
    myClip.lineTo(350, 20);
    myClip.lineTo(230, 100);
    myClip.lineTo(230, 20);

    Вот как выглядит результат работы этого скрипта:

    Рассмотрим функцию, которая рисует кривые: curveTo(controlX, controlY, anchorX, anchorY). Функция имеет четыре обязательных параметра. При отсутствии хотя бы одного из них она не срабатывает. Началом кривой считается текущая позиция курсора ("карандаша"), которая устанавливается при помощи moveTo(), или же позицией, в которой закончили черчение функции lineTo() или curveTo(). Конец кривой указывается параметрами anchorX и anchorY. Параметры controlX и controlY указывают точку, к которой направлены начало и конец линии. Для наглядности на рисунке ниже обозначены все точки.

    Рисование с помощью ActionScript во Flash MX

    Вот пример кода, и рисунка, который получается в результате его исполнения:

    lineStyle(1);
    beginFill(0xFF9921, 20);
    moveTo(70,20);
    curveTo(120,20,120,70);
    curveTo(120,120,70,120);
    curveTo(20,120,20,70);
    curveTo(20,20,70,20);
    endFill();

    moveTo(140,120);
    curveTo(140,20,160,20);
    curveTo(180,20,180,120);

    Наконец, рассмотрим самую сложную функцию 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 )
    {
    colors = [ 0x0066FD, 0xFFFFFF, 0xFFFFFF, 0x996600, 0xFFCC00, 0xFFFFFF];
    alphas = [ 100, 100, 100, 100, 100, 100 ];
    ratios = [ 0, 100, 120, 125, 165, 255];
    matrix = { matrixType:"box", x:20, y:20, w:130, h:100, r:(45/180)*Math.PI };
    beginGradientFill( "linear", colors, alphas, ratios, matrix );
    moveto(20,20);
    lineto(150,20);
    lineto(150,120);
    lineto(20,120);
    lineto(20,20);
    endFill();
    }

    Вот и всё! На самом деле, после небольшого количества практики, всё становится понятно и легко.

    Как обычно, можно скачать все примеры к уроку: draw.zip (6 k)



    Дополнительно на данную тему:

    Рисуем 'работающие' часы в Flash
    Снег во Flash
    Рассуждение о 'прелоадере'
    Еще о 'прелоадере'
    Flash и видео: импорт, экспорт и работа с SWF, FLV, MOV (QuickTime), AVI, MPEG
    Flash 8 обзор
    Определение скорости компьютера
    Загрузка текста и переменных во Flash
    Передача данных из Flash в серверные сценарии
    Macromedia Flash 5 (обзор)

    Назад | Начало | Наверх
    Rambler's Top100