Ну вот, как всегда... Недавно писал о динамическом рисовании пунктирной линии в ActionScript 3.0, а сегодня совершенно случайно обнаружил гораздо более интересное решение - пользовательский класс DashedLine от Andy Woodruff. Класс DashedLine предоставляет широкие возможности при создании пунктирных линий и очень прост в использовании. Работа с этим классом очень сильно напоминает работу со стандартными методами рисования линий в ActionScript 3.0. Вот несколько примеров пунктирных линий, которые были созданы с помощью класса DashedLine:
Согласитесь, очень даже неплохое решение (особенно если его сравнить с решением из предыдущего поста). При этом рисовать с помощью данного класса действительно невероятно просто. Смотрите сами...
Код ActionScript 3.0:
/*
подключаем класс
*/
import DashedLine;
/*
рисуем
*/
var dashedLine:DashedLine = new DashedLine(2,0x333333,new Array(5,10));
dashedLine.moveTo(50,50);
dashedLine.lineTo(500,50);
addChild(dashedLine);
Данный код, как нетрудно догадаться, нарисует пунктирную линию из точки с координатами (50,50) в точку с координатами (500,50). Это будет сделано с помощью методов moveTo() и lineTo(). Эти два метода используются точно также, как и одноимённые стандартные методы динамического рисования в ActionScript (смотри пост о динамическом рисовании в ActionScript).
Но стоит объяснить, какие параметры передаются в конструктор класса DashedLine при создании объекта. Как можно видеть, этих параметра всего три:
1-й параметр - это толщина пунктирной линии (в приведённом выше примере - 2);
2-й параметр - это цвет линии (в приведённом выше примере - 0x333333);
3-й параметр - это массив, с помощью которого определяется рисунок пунктирной линии.
Это как раз тот случай, когда лучше один раз показать, чем долго и нудно объяснять. Например, мы передаём в качестве параметра массив Array(50,20). В результате будет создана следующая пунктирная линия:
Согласитесь, всё просто и понятно :-)
Давайте, ради закрепления, создадим пунктирную линию с вот таким рисунком:
Это мы сделаем с помощью следующего кода...
Код ActionScript 3.0:
/*
подключаем класс
*/
import DashedLine;
/*
рисуем
*/
var dashedLine:DashedLine = new DashedLine(4,0x333333,new Array(12,6,4,6));
dashedLine.moveTo(50,50);
dashedLine.lineTo(500,50);
addChild(dashedLine);
Вот и всё... Хотя, нет, не всё :-)
Дело в том, что с помощью класса DashedLine мы можем рисовать не только линии, но и более сложные примитивы. Например, мы можем нарисовать прямоугольный примитив с пунктирной обводкой. Делается это так...
Код ActionScript 3.0:
/*
подключаем класс
*/
import DashedLine;
/*
рисуем
*/
var dashedLine:DashedLine = new DashedLine(2,0x333333,new Array(5,5));
dashedLine.beginFill(0xdddddd,1);
dashedLine.moveTo(50,150);
dashedLine.lineTo(50,150);
dashedLine.lineTo(250,150);
dashedLine.lineTo(250,200);
dashedLine.lineTo(50,200);
dashedLine.lineTo(50,150);
dashedLine.endFill();
addChild(dashedLine);
Здесь вы видите два "новых" метода:
- beginFill() - начинает заливку примитива и в качестве параметров принимает цвет и прозрачность заливки;
- endFill() - завершает заливку примитива.
Если вы работали с программным рисованием в ActionScript ранее, то сразу же поймёте, что эти два метода копируют не только название, но и функционал стандартных методов beginFill() и endFill().
Исходник под Adobe Flash CS5.5 и сам класс DashedLine скачать можно здесь.