2012-03-19 7 views
0

저는 앱에서 다른 개발자와 협력 중입니다. 그의 부분은 기본적으로 독립형 모듈로 개발 된 컨트롤 패널이며 내 메인 앱에 통합되어야합니다.비트 맵 데이터에서 간단한 모양 또는 복잡한 movieClip을 그리는 성능 차이

내 app은 bitmapData의 모든 패널과 요소를 다시 그려야 bitmapData.hitTest 컨트롤을 수행해야합니다 (우리는 멀티 터치 테이블에서 작업 중이며 패널은 드래그 가능하지만 오버랩은 피해야합니다).

어제까지 저는 자리 표시 자와 작업 중이므로 기본적으로 그가 작업중인 모듈의 정확한 치수를 간단한 모양으로 그려 넣었습니다. 오늘 우리는 처음으로 모든 것을 합치려고 노력했으며 성과는 매우 달랐습니다. 자리 표시 자 모양 대신 모듈을 다시 그려 보면 큰 성능 저하가 발생합니다.

정상입니까? 성능면에서 bitmapData 내부에 표시 객체를 그리는 과정은 내용이 아니라 클립의 크기와 관련이 있다고 생각했습니다.

편집 : 난 이미 해결 (기본적으로 패널 객체의 경계 상자 같은 것을 그리기)로 수정,하지만 난 여전히 :)에 대한 궁금

성능은 일부에 의해 결정됩니다
+0

어떤 BitmapData 방법을 사용하고 있습니까? 투명성이 수반되어 있습니까? –

+0

bitmapData.hitTest를 사용하고 있습니다. 문제를 일으키는 패널에는 투명도가 없습니다. –

+0

아니요, 픽셀을 그릴 때 어떤 방법을 사용했는지 묻는 중입니다. 예를 들어 copyPixels는 그리기보다 훨씬 빠릅니다. –

답변

0

표시 객체의 내용 어린이의 수와 복잡성에 따라 크게 달라질 수 있습니다. 예를 들어, 1px (임의로 작은 수)의 스프라이트를 10,000 개 (임의로 많은 수의) 스프라이트로 쌓을 수 있습니다. 각각의 스프라이트에는 드로잉 코드가있는 임의의 벡터 명령 (moveTo, lineTo 등)을 드로잉 할 수 있으며, 보이는 영역 바깥에서도이 드로잉 명령은 드로잉 메서드가 호출 될 때 드로잉 영역에 관계없이 실행됩니다 (특정 코드는 특정 제약 조건에 대해 호출되지 않도록합니다.) BitmapData 객체에 표시 객체를 그리는 것과 화면에 그리는 것 사이에 상당한 차이가 있다는 것을 나는 믿을 수 없습니다. (여기서 생각할 수있는 유일한 차이점은 RAM/힙 공간에 쓰는 것입니다. 반면 GPU 가속을 사용하면 내부적으로 비디오 RAM을 대신 사용하십시오).

hitTest 그 자체가 B의 픽셀 대 A의 픽셀을보고 있기 때문에 그 자체로 자식 수에 영향을받지 않을 것이라고 생각합니다. 말하자면 픽셀 영역에만 의존해야합니다. A와 B에서.

너는 어떤 종류의 접촉면을 사용하고 있으며, 그것이 작동하고있는 플랫폼은 무엇인가? (Android?). Tegra 2 또는 3 (또는 일부 다른 멀티 코어 및/또는 GPU 가속 칩셋)과 같은 우수한 프로세서를 사용하면 성능에 미치는 영향이 크지 않을 것입니다 (비록 내가 잘못 될 수는 있지만).). 나는 정상적인 슈팅 게임에서 약간의 작업을 해왔고 최근에는 경계 상자를 사용하여 BitmapData의 히트 테스트 메서드를 사용하여 썼던 단순화 된 히트 테스트 메서드를 사용하지 않고 성능을 부정적으로 영향을 미치지 않는 것처럼 로컬에서 테스트했지만 기기에서 테스트 할 케이블이 아직 없기 때문에 기기에서 실행될 때 성능에 영향을 미치는지 확실하지 않습니다.

+0

thx, 나는 그것에 대해 확실하지 않았다. 문제는 hitTest에는 없지만 테이블의 객체가 이동할 때마다 테이블의 다른 모든 객체를 포함하는 bitmapData가 다시 그려져 hitTest 계산이 수행됩니다. 복잡한 객체의이 일정한 재연 가능성으로 인해 성능 저하가 발생합니다. 그리고 귀하의 질문에 대해, 나는 모바일 플랫폼에서 일하는 것이 아니라 사용자 정의 멀티 터치 테이블에서 작업하고 있습니다 :) –

+0

@ Sr.Richie Awesome!나는 커뮤니티 핵심 비전을 사용하여 FTIR (Jeff Han의 기술)을 기반으로 한 제품을 만들었지 만 작업을 계속하기 위해 프로젝트 작업에 너무 몰두했습니다. 행운을 빈다는 것은 확실히 흥미로운 일입니다. – shaunhusain