2009-12-30 2 views
0

지금 당장 현재 작성중인 게임에 타일 효과를 적용하려고합니다. 나는 tilesheet를 사용하고 난스프라이트 비트 맵 변경

this.graphics.beginBitmapFill(tileImage); 
this.graphics.drawRect(30, 0,tWidth ,tHeight); 

var에 tileImage가의 BitmapData입니다 ... 그래서 같은 스프라이트에 타일을로드하고 있습니다. 30은 retangle을 이동시킬 픽셀 수입니다. tWidth와 tHeight는 사각형의 크기입니다. 30x30

을 어떤이 나는 타일

this.graphics.clear(); 
this.graphics.beginBitmapFill(tileImage); 
this.graphics.drawRect(60, 0,tWidth ,tHeight); 

이상 나는 역할은 내가 스프라이트 캔버스를 지우면 비트 맵을 변경하는 일이다. 그런 다음 tileImage에서 다른 위치로 다시 작성합니다.

내 문제가 ....

그것은 새로운 타일 위치 멀리 오른쪽에있는 기존 비트 맵이 나타난 후 위치를 완전히 오래된 타일을 제거하지만

.

내 타일 시트는 폭이 90px, 높이가 30px입니다. 그 위에, 새로운 타일이 오래된 타일 뒤에 그려져있는 것처럼 보입니다. 이것을 완벽하게하는 더 좋은 방법이 있습니까? 비트 맵 색상

답변

1
당신은 scrollRect 재산에게 당신이 필요 할 때마다 다시 정의 다음 스프라이트에 전체 tilesheet을로드하려고하고, 수

을 변경하는

다시, 내가 원하는 모든입니다. 그냥 scrollRect.x, .y, .width 또는 .height을 편집 할 수 없습니다

this.scrollRect = new Rectangle(30, 0, tWidth ,tHeight); 

참고; 매번 새로운 사각형을 재정의해야합니다.

scrollRect를 사용하면 비트 맵의 ​​일부를 다시 그리는 속도가 훨씬 빠릅니다.

scrollRect에 대한 자세한 내용은 this excellent article from Grant Skinner을 참조하십시오.

+0

scrollRect를 설정하더라도 cacheAsBitmap을 설정하지 않으면 표시 객체의 전체 영역이 다시 렌더링된다는 점을 잊지 마십시오. – aaaidan

+0

체크 아웃 : http://files.jacksondunstan.com/articles/629/CacheAsBitmapTest.swf – aaaidan

+0

(추신 : 링크는 디버그 플래시 플레이어로보아야하며 그렇지 않은 경우 ...) – aaaidan