2010-02-23 3 views
0

ActionScript 3에서 간단한 화이트 보드 응용 프로그램을 만들고 있습니다. ActionScript의 대부분의 화이트 보드 또는 페인팅 응용 프로그램은 interval, timer, mouseMove 이벤트 또는 enterFrame 이벤트를 사용하여 마우스 위치와 페인트 선 또는 브러쉬 사이를 추적 지점.화이트 보드 앱에 대해 부드러운 페인트 커브를 얻으려면 어떻게해야합니까?

나는 브러시 도구로 페인팅하는 동안 Photoshop과 같은 프로그램에서 렌더링 할 수있는 매끄러운 페인트 선을 만듭니다. Photoshop에서 캔버스 주위로 마우스를 움직이는 속도에 관계없이 페인트 된 선은 항상 매끄러운 곡선 가장자리로 끝납니다. 내 응용 프로그램에서는 앞에서 언급 한 방법 중 하나를 사용하여 브러시를 스테이지로 렌더링하는 함수 호출 사이에 항상 대기 시간이 있습니다. 따라서 이러한 기술 중 하나를 사용하면 순환 방식으로 마우스를 매우 빠르게 움직일 때 날카로운 모서리가 생길 수 있습니다.

이것은 나에게 놀라운 일이 아니며 Photoshop의 브러시 도구와 같은 부드러운 선을 어떻게 얻을 수 있는지 알 수 없습니다. 내 응용 프로그램 용 브러쉬는 주로 모양을 기반으로하며 드로잉 API를 사용하여 연속 선을 그릴 수 없으며 사용할 수 없습니다. 즉, graphics.curveTo()는 옵션이 아닙니다. 또한 브러시에서 생성 된 Sprite 또는 Shape를 BitmapData 인스턴스로 렌더링합니다.

답변

0

내 솔루션은 두 기술의 조합 었죠 몇 가지 샘플을 가지고 :). 내가 끝내기 시작한 것은 브러시가 사용 중이거나 페인트 될 때 경로 미리보기를 보여주는 것이 었습니다. 이것이 일어나고있는 동안 나는 그 간격들 사이의 모든 점들을 모으고있다. 그런 다음 사용자가 마우스 버튼을 놓으면 모든 수집 된 점 사이에 2 차 베 지어 곡선을 사용하여 더 정확하고 곡선적인 브러시 획을 페인트합니다.

0

그렇다면 그래픽 API를 사용하지 않는 경우 어떻게 그리시겠습니까? (Graphics API의 lineBitmapStyle 함수를 살펴볼 수 있습니다).

그리기 방법에 관계없이 내가 가지고있는 두 점 사이의 브러시 경로를 추정합니다. 이전 점을 사용하여 경로를 커브하는 방법 (및 얼마나 많이)을 결정할 수 있습니다. . 베 지어 곡선을 읽었습니까? (http://en.wikipedia.org/wiki/B%C3%A9zier_curve)

+0

스프라이트의 비트 맵을 표시 목록에 추가하여 렌더링 할 때마다 "선"을 그렸습니다. 모든 브러쉬가 선이 아닌 때로는 이상한 모양이기 때문에이 기술을 사용하고 있습니다. –

+0

오른쪽이지만 브러쉬의 경로는 여전히 라인에 매핑됩니다. 디버깅 측정 값으로 이러한 경로를 그리고 실제 브러시 모양의 x, y 값을이 경로에 매핑하면 도움이 될 수도 있습니다. – quoo

+0

누군가 왜 이것이 downvoted되었다 명확히 할 수 있을까요? – quoo

-2

좋은 결과를 얻는 유일한 방법은 플래시 무비에 더 높은 프레임 속도를 사용하는 것입니다. 이렇게하면 초당 더 많은 검사가 이루어지기 때문에 라인을보다 부드럽게 만들어야합니다. 이것

관련 문제