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


Создание полной программы рисования - часть 3


onClipEvent (enterFrame) {

if (draw) {

// Определяем текущую позицию.

x = _root,_xmouse;

у = _root._ymouse;

// Задаем границы области рисования,

if (x < xmin) x = xmin;

if (x > xmax) x = xmax;

if (y < ymin) у = ymin;

if (y > ymax) у = ymax;

// Рисуем линию.

_root.lineTo(x,у);

// Если выбран режим заливки, то запоминаем точку,

if (fill) {

fillArray.push({х:х, y:y});

}
}
}

Когда пользователь отпускает кнопку мыши, переменная draw принимает, значение false, и рисование прекращается. Если при этом выбран режим заливки, то в цикле просматривается массив fillArray и созданная область перерисовывается. При этом также используются команда beginFill и endFill. В результате область заливается цветом linecolor.

onClipEvent (mouseUp) {

if (draw) {

// Прекращаем рисовать.

draw = false;

// Перерисовываем кривую и заливаем

// получившуюся область,

if (fill) {

// Начинаем с первой точки.

_root.moveTo(fillArray[0].x,fiiiArray[0] .у);

// В цикле определяем область для заливки.

_root.beginFill(lineColor);

for(var i=l;i < fillArray.length;i++) {

_root.lineTo(fillArray[i].x,fillArray[i].y);

}

_root.endFill();
}
}
}

Другой способ состоит в том, что вы можете вызвать команду beginFill до того, как пользователь начнет рисовать, и команду endFill - когда он закончит, вместо того чтобы перерисовывать кривую. Но Flash не очень любит использовать заливку при разных обращениях к кадру, и результат может быть хаотичен. Лучше сохранить кривую, а затем перерисовать ее и создать всю заливку в пределах одного обработчика.




Начало  Назад  Вперед



Книжный магазин