onClipEvent (mouseDown) {
// Определяем позицию курсора.
x = _root._xmouse;
y = _root._ymouse;
// Рисуем, если не вышли за границы поля.
if ((x>xmin) and (x draw = true; // Определяем параметры линии. _root.lineStyle(1,lineColor,100); _root.moveTo(x,y); // Если выбран режим заливки, то создаем массив. if (fill) { fillArray = new Array(); fillArray.push({x:x, y:y}); } }
После того как переменной draw присвоено значение true, продолжаем линию до тех пор, пока пользователь не отпустит кнопку мыши. При каждом обращении к кадру переменным x и у присваиваются текущие координаты курсора. Если эти значения выходят за разрешенные границы, переменные x и у переопределяются. Затем используется команда lineTo для отображения очередного сегмента линии. Если выбран режим заливки, то добавляется новый элемент в массив fillArray.
onClipEvent (enterFrame) {
if (draw) {
// Определяем текущую позицию.
x = _root._xmouse;
y = _root._ymouse;
// Задаем границы области рисования.
if (x < xmin) x = xmin;
if (x > xmax) x = xmax;
if (y < ymin) y = ymin;
if (y > ymax) y = ymax;
// Рисуем линию.
_root.lineTo(x,y);
// Если выбран режим заливки, то запоминаем точку.
if (fill) {
fillArray.push({x:x, y:y});
}
}
}Когда пользователь отпускает кнопку мыши, переменная draw принимает, значение false, и рисование прекращается. Если при этом выбран режим заливки, то в цикле просматривается массив fillArray и созданная область перерисовывается. При этом также используются команды beginFill и endFill. В результате область заливается цветом lineColor.
onClipEvent (mouseUp) {
if (draw) {
// Прекращаем рисовать.
draw = false;
// Перерисовываем кривую и заливаем
// получившуюся область.
if (fill) {
// Начинаем с первой точки.
_root.moveTo(fillArray[0].x,fillArray[0].y);
// В цикле определяем область для заливки.
_root.beginFill(lineColor);
for(var i=1;i _root.lineTo(fillArray[i].x,fillArray[i].y); } _root.endFill(); } }
Внимание!
Другой способ состоит в том, что вы можете вызвать команду beginFill до того, как пользователь начнет рисовать, и команду endFill – когда он закончит, вместо того чтобы перерисовывать кривую. Но Flash не очень любит использовать заливку при разных обращениях к кадру, и результат может быть хаотичен. Лучше сохранить кривую, а затем перерисовать ее и создать всю заливку в пределах одного обработчика.
Добавление кнопок Clear и Print
Чтобы очистить рабочую область, мы просто нарисуем сверху заполненный цветом области прямоугольник. Это выполняется с помощью сценария кнопки Clear (Очистить).
Мы устанавливаем толщину линии 0. Затем перемещаем указатель в верхний левый угол нашей области и рисуем прямоугольник, который точно ее повторяет и определяет область заливки. Цвет заливки – белый, так как именно он выбран фоновым в нашем ролике.