2011-08-22 3 views
0

지도를 그리는 응용 프로그램을 개발 중입니다.스레드 드로잉

현재 내 논리는 다음과 같습니다

1) 내가 층 (타일, 선, 사각형 등)의 수집과 활동이있다.

2) 캔버스를 포함하는보기를 보여주는 활동.

3) 이보기에서 저는 "RenderAll"을 호출합니다. 무슨 일이 일어나는가는 모든 레이어를 거쳐 각각의 레이어에서 렌더링 프로 시저를 호출한다는 것입니다. 내 렌더러에 캔버스를 보내고 캔버스에 물건을 그립니다. 일단 완료되면 onDraw가 내 뷰에서 호출되고 이미지가 완성되어 뷰에 그려집니다.

내가 원하는 것은 각 레이어가 개별적으로 그려지는 것입니다. 의미, 나는 다른 스레드에서 그려야합니다. 그래서 내지도가 움직일 때, 먼저 타일들이 그리고 그 다음에 선들이 그려집니다. 또한지도를 이동하여 작업을 취소해야합니다.

좋은 자습서로 어떤 점을 알려주십시오. 어떻게해야합니까? 나는 멀티 스레딩에서 새로운 ...

고마워.

답변

2

첫째, 읽기 : http://download.oracle.com/javase/tutorial/essential/concurrency/

그런 다음 당신의 디자인을 다시 생각합니다. 거리 이름과 거리를 실제로 이동 하시겠습니까? 기억하십시오 : 시간이 걸릴 수 있으므로 몇 초 동안 사용자는 "잘못된"그림을 보게됩니다. 더 많이 : 얼마나 많은 레이어가 있습니까? 레이어 수가 늘어날 수 있다면 (예 : 맞춤 제목, 상점 이름 등) 디자인에 포함 된 스레드 수가 너무 많아서 좋은 생각처럼 보이지 않습니다.

왜 모든 레이어를 순차적으로 그리는 드로잉 스레드가 없습니까? 아마도 멀티 스레드 솔루션보다 더 빨리 작동하고 구현하기가 더 쉽습니다.

+0

안녕하세요! 실제로 당신이 묘사하는 문제는 일어날 수 없습니다. 현재지도를 패닝하면 모든 레이어가 렌더링되고 캔버스로 그려집니다. 나는 그 때 보여주는 새로운 이미지를 얻는다. 먼저 타일을 표시하고 다른 레이어를 순서대로 표시하려고합니다. 렌더링이 진행되는 동안지도를 이동하면 작업을 취소 한 다음 다시 렌더링하고 싶습니다. "순차적 인"제안에 대한 모범이 있습니까? – no9