2010-02-23 6 views
0

Я создаю приложение простой белой доски в ActionScript 3. Большинство приложений с белой доской или рисованием в ActionScript имеют тенденцию использовать интервал, таймер, событие mouseMove или событие enterFrame для отслеживания положения мыши и линий рисования или кистей между отслеживаемые точки.Как я могу получить гладкую окрашенную кривую для приложения с белой доской?

То, что я пытаюсь достичь, является красивой гладкой окрашенной линией, которую может сделать программа, подобная Photoshop, при рисовании инструментом кисти. В Photoshop, независимо от того, как быстро вы перемещаете мышь вокруг холста, окрашенные линии всегда заканчиваются приятным гладким кривым краем. В моем приложении, используя любой из упомянутых выше способов, всегда существует латентность между вызовами функций, которые выводят кисть на сцену. Таким образом, использование любого из этих методов может привести к резкой поворотной линии при очень быстром перемещении мыши круговым способом.

Для меня это не удивительно, я просто не знаю, как я мог бы достичь более гладкой линии, такой как инструмент кисти Photoshop. Имейте в виду, что кисти для моего приложения в основном основаны на фигурах и не могут или не могут использовать API-интерфейс рисования для рисования линий продолжения. Другими словами, graphics.curveTo() не является опцией. Я также передаю спрайты или формы, созданные кистями, в экземпляр BitmapData.

ответ

0

Мое решение в конечном итоге является сочетание двух методов. То, что я закончил, показывало предварительный просмотр пути, когда кисть используется/окрашивается. Поскольку это происходит, я собираю все точки между интервалами. Затем, когда пользователь отпускает кнопку мыши, я рисую более точный, изогнутый ход кисти с использованием квадратичной кривой безье между всеми собранными точками.

0

Итак, как вы рисуете свои линии, если вы не используете графический API? (вы можете посмотреть на функцию lineBitmapStyle графического интерфейса API).

Что бы я ни делал, независимо от метода рисования, оценивается путь кисти между двумя вашими точками, возможно, используя предыдущие точки, чтобы определить, каким образом (и насколько) будет кривая путь , Вы читали кривые Безье? (http://en.wikipedia.org/wiki/B%C3%A9zier_curve)

+0

Я рисовал «линии» каждого интервала, создавая растровое изображение спрайтов, добавленных в список отображения. Я использую эту технику, потому что не все кисти являются линиями, но иногда нечетными. –

+0

Правильно, но путь кисти по-прежнему отображается в строке - возможно, это поможет вам, если вы нарисуете эти пути (как меру отладки), а затем сопоставьте значения x, y реальной формы кисти с этим путем. – quoo

+0

Может ли кто-нибудь объяснить, почему это было приостановлено? – quoo

-2

Я думаю, что единственный способ получить лучший результат - использовать более высокую частоту кадров для вашего флеш-ролика. Таким образом, в секунду выполняется больше проверок, что должно сделать линию более гладкой.