Альбом для рисования
После того как переменной draw присвоено значение true, продолжаем линию до тех пор, пока пользователь не отпустит кнопку мыши. При каждом обращении к кадру переменным х и у присваиваются текущие координаты курсора. Если эти значения выходят за разрешенные границы, переменные х и у переопределяются. Затем используется команда 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, fiiiArray[
0
].y);
// В цикле определяем область для заливки.
_root.beginFill(lineColor);
for
(
var
i
=
l; i
<
fillArray.length; i
+
+
) {
_root.lineTo(fillArray[i].x, fillArray[i].y);
}
_root.endFill();
}
}
}
Другой способ состоит в том, что вы можете вызвать команду beginFill до того, как пользователь начнет рисовать, и команду endFill – когда он закончит, вместо того чтобы перерисовывать кривую. Но Flash не очень любит использовать заливку при разных обращениях к кадру, и результат может быть хаотичен. Лучше сохранить кривую, а затем перерисовать ее и создать всю заливку в пределах одного обработчика.