Альбом для рисования
После того как переменной 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 не очень любит использовать заливку при разных обращениях к кадру, и результат может быть хаотичен. Лучше сохранить кривую, а затем перерисовать ее и создать всю заливку в пределах одного обработчика.
