Здравствуйте.
Передо мной была поставлена задача сделать «рисовалку» на AS3. По нескольким причинам я решил делать программное рисование не через
graphic.lineTo, а через
BtimapData и
draw. Основными причинами к этому были:
1) Нестандартные «кисти» с размытыми краями.
2) Возможность «стирать» нарисованное.
За саму часть рисования у меня отвечает следующий код:

Код AS3:
function onMouseMove(event:MouseEvent) {
if (this.instrument_mc) {
this.instrument_mc.x = Main.stage.mouseX;
this.instrument_mc.y = Main.stage.mouseY;
//
if (event.buttonDown) {
this.toDraw();
}
}
}
function onMouseDown(event:MouseEvent) {
this.toDraw();
}
Блок:

Код AS3:
if (this.instrument_mc) {
Проверяет наличие инструмента для рисования «в руке».
А блок с:

Код AS3:
if (event.buttonDown) {
Проверяет нажата ли кнопка мышки. Если все условия выполняются, то запускается функция
toDraw(), в которой и реализован механизм рисования. Механизм примерно такой:

Код AS3:
this.matrix.tx = toX;
this.matrix.ty = toY;
this.bitmap.draw(_mc, this.matrix, this.colorTransform, instrumentBlendMode);
_mc — это клип, которым рисуем, то есть, те самые «кисточки».
instrumentBlendMode — бывает
BlendMode.NORMAL и
BlendMode.ERASE, что позволяет либо рисовать, либо стирать нарисованное.
Но это всё было отступлением, проблема заключается в том, что если быстро вести мышкой при зажатой кнопке, то линия получается обрывистой, что видно на следующем скриншоте:
На картинке, быстрее всего была проведена верхняя линия, две линии ниже идут по уменьшению скорости.
Вот и вопрос, есть ли способ с этим как-то бороться, или же стоит смотреть в сторону
graphic.lineTo и можно ли там (
graphioc.lineTo) как-то добиться размытости кистей?
Как всё работает «в живую» можно посмотреть тут (65кб, прелодера нет):
http://flashist.ru/files/azat/school/index.html
P.S.:
updateAfterEvent() пробовал, не помогло. Может быть я как-то не так пробовал?
Так же пробовал, при нажатии на кнопку мыши, запускать таймер который бы вызывался 200 раз в секунду и рисовал
Btimap, а при отпускании кнопки мышки таймер бы приостанавливался. Тоже не помогло. Может быть опять как-то не так пробовал?
UPD.:
Изменять количество FPS до максимальных 120 тоже пробовал, тоже не помогло =(