2012-12-14 5 views
0

지도 응용 프로그램에서 작업 중이며 크기 조정 중에 타일 배치 방법에 문제가 있습니다.바둑판 식으로 배열 된 Sprite 사이의 간격

은 여기 내 구조의 기본 모습이다

enter image description here

분명히 훨씬 더 벌어지고있다,하지만 당신은 아이디어를 얻을. 이제 Map App Sprite을 확대하여 확대합니다. 스케일링이 발생하면 각 타일 사이에 간격이 있습니다.

4 개 타일이 여기에 만나는 당신은 차이를 볼 수 있습니다

enter image description here

나는 비트 맵으로 모든 캐싱하고있다. 각 레이어 (모두 Bitmap을 확장)에 대해 smoothing이 true로 설정되고 pixelSnappingPixelSnapping.ALWAYS으로 설정되어 있습니다 (픽셀 스냅이 여기에 도움이되면 안되지만 어느 쪽도 해를 입히지 않아야 함).

누구든지이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?

은 (완전성을 위해,지도 응용 프로그램은 AS3를 사용하여 완전히 구축과는 플렉스 응용 프로그램에 포함)

+0

플렉스에 어떤 컨테이너를 넣었습니까? 그리고 어떻게? 작은 코드가 먼 길을 간다?:) –

+0

난 플렉스에서 Sprites를 사용할 수 있도록 UIComponent에 두었습니다. (지도는 AS3 응용 프로그램에서도 사용할 수 있어야합니다.) –

답변

1

타일 x, y 위치에 정수를 사용하고 해당 위치를 정확하게 계산하면 이미지에 이음새가없는 한 여기에서 해결할 가능성이 큽니다! x, y 위치를 계산하고 설정하는 코드는 코드에서 문제를 올바르게 지적하는 데 필요합니다.

그러나 컨테이너 스프라이트를 스케일하는 경우에도 타일의 너비/높이가 정수 값이되도록 조정해야합니다.

예를 들어 이러한 타일이 포함 된 스프라이트의 크기를 조절하면 개별 타일의 너비/높이가 항상 정수가되는 것은 아니므로 볼 수있는 이음새가 만들어집니다.

이 경우 컨테이너 스프라이트에 scaleX 및 scaleY를 사용하는 것과 달리 비율을 고려하여 너비/높이 값을 정수 값으로 조정하여 크기를 조정할 수 있습니다.

+0

이것은 정확히 무슨 일이 일어나고 있는지입니다. 부모 컨테이너, 즉 스케일링중인 컨테이너는 가장 가까운 int로 반올림되지만 해당 컨테이너 내의 타일은 반올림되지 않습니다. 이 문제를 해결하려면 부모 컨테이너가 아닌 각 타일을 개별적으로 크기를 조정해야하며 모두 둥근 모양이어야합니다. 그러한 변화를 수용하기 위해 내 Pan/Zoom 클래스를 리팩토링해야합니다. Uncool,하지만 나는 선택의 여지가 없어 보인다. 도와 주셔서 감사합니다 –

1

그것을 확인하기 위해 어려운 코드를 보지 않고 있지만, 아마도 단지 시각적 인 유물이다 크기 조정으로 인해 - 예 : 250px 와이드 비트 맵이 155 %로 조정 된 경우 387.5px 너비로 렌더링해야하지만 이는 불가능하므로 388px로 렌더링됩니다. 0.5px 부분이 50 % 알파에서 1px로 렌더링되어 0.5의 '모양'을 제공합니다. px.

크기 조정 된 비트 맵의 ​​너비/높이가 항상 정수인지 확인하면 해결할 수 있습니까?

1

반올림 오류가있는 것 같습니다.

코드가 없으면 알기 어렵습니다. 타일링 클래스의 베어 본 예제를 게시하면 귀하와 우리 모두에게 큰 자산이됩니다. 뺄셈 과정에서 당신은 당신의 솔루션을 발견 할 수 있습니다.

네 가지 다양한 미세 입자 단계에서 네 개의 100x100 비트 맵 이미지를 확장 및 축소하여 플래시 렌더링 문제인지 또는 클래스의 결함인지를 판단 할 때 어떤 일이 발생하는지 테스트해야한다고 제안합니다.

관련 문제