Иллюстрированный самоучитель по созданию Flash-игр

Альбом для рисования

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.