2013-03-23 1 views
2

actionscript 2를 사용하여 플래시에서 대형 타일 기반 맵을 생성하는 가장 좋은 방법은 무엇인지 궁금합니다.Actionscript 지연을 생성하는 2 개의 대형 타일 기반 맵

현재 코드에서는 35x35 (1225 무비 클립) 이상의 모든지도가 지연되기 시작합니다. 지도는 간단한 다차원 배열 (예 :

var map = [[95,23,25,23,16,25],[95,23,25,23,16,25],[95,23,25,23,16,25]]; 

이 프로그램은 단순히 적절한 프레임으로 이동, 타일의 무비 클립을 만들고 플레이어의 위치에 타일 상대를 배치합니다. 각 타일에는 하나의 속성 즉 walkable이 있습니다.이 속성은 플레이어가 걸을 수 있는지 여부를 결정하는 true 또는 false입니다. 이 타일은 홀더 영화 클립의 자식입니다. 플레이어가 움직이면 홀더 무비 클립이 이동합니다 (그러나 그 안에 포함 된 많은 타일).

대규모지도에서 지연을 줄이는 가장 좋은 방법은 무엇입니까?

+0

이것은 동일한 사용자가 3 가지 관련 질문 중 하나입니다. 질문은 다음과 같습니다. [AS2 onEnterFrames로 여러 영화 클립을 처리 할 때 지연을 줄이는 가장 좋은 방법] (http://stackoverflow.com/questions/16848043), [처리 actionscript 2에서 무한/거대한 세계와 함께] (http://stackoverflow.com/questions/19060661/dealing-with-infinite-huge-worlds-in-actionscript-2), [Actionscript 지연을 만드는 2 개의 대형 타일 기반지도] (http://stackoverflow.com/questions/15583420/actionscript-2-large-tile-based-maps-creating-lag) –

답변

1

한 번에 큰지도의 일부만 표시되는 경우 현재 보이는 타일에 대해서만 하위 영화 클립 타일을 만든 다음 뷰포트가 움직이면서 추가하거나 제거합니다.

한편, 모든 것을 한꺼번에 표시하려면 BitmapData 클래스를 사용하여 모든 타일을 하나의 큰 동영상 클립에 그래픽으로 복사해야합니다. 그런 다음 동영상 클립 하나를 큰 동영상 클립으로 스크롤해야하므로 동영상 클립을 제거 할 수 있습니다.

타일에 따라 cacheAsBitmap을 true로 설정하고 관련된 모든 동영상 클립에 opaqueBackground을 지정하여 실험 해 볼 수도 있습니다.

+0

한 번에지도의 일부만 볼 수 있으므로 영화 클립을 제거하고 다시 볼 수 있습니다. 그것들을/false로 보이도록 설정하는 것이 가장 이상적인 옵션이 될 것입니다. 그러나 나는 몇 시간 동안 노력했는데 제대로 작동하지 않는 것 같습니다. 어떤 제안? –

+0

BitmapData 클래스를 사용하면 movieclip 속성 즉. . 워킹블이 사라질까요? –

+0

예. 보이는 타일과 별도로 .walkable을 추적해야합니다. 당신이 영화 클립에 할당 한 일종의 배열에 있다고 이미 가정합니다. 대신 .walkable 검사를 수행 할 때마다 원래 배열에 액세스해야합니다. –