![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
Здравствуйте.
Передо мной была поставлена задача сделать «рисовалку» на AS3. По нескольким причинам я решил делать программное рисование не через graphic.lineTo, а через BtimapData и draw. Основными причинами к этому были: 1) Нестандартные «кисти» с размытыми краями. 2) Возможность «стирать» нарисованное. За саму часть рисования у меня отвечает следующий код: 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(); } Проверяет наличие инструмента для рисования «в руке». А блок с: Проверяет нажата ли кнопка мышки. Если все условия выполняются, то запускается функция toDraw(), в которой и реализован механизм рисования. Механизм примерно такой: this.matrix.tx = toX; this.matrix.ty = toY; this.bitmap.draw(_mc, this.matrix, this.colorTransform, instrumentBlendMode); 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 тоже пробовал, тоже не помогло =( Последний раз редактировалось koIIImarik; 16.03.2009 в 02:38. |
![]() |
Часовой пояс GMT +4, время: 23:17. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| bitmap , рисование |
|
|