기본 콘텐츠로 건너뛰기

FlashPunk에서 Base64 인코딩 된 타일맵 불러오기

이 글은 Tiled map editor를 이용해서 만든 맵 데이터를 FlashPunk로 불러오는 법에 대한 글입니다.
Tiled는 맵 저장을 XML로 저장할 수도 있고, zlib로 압축해서 Base64인코딩 할 수도 있습니다.
맵이 커질수록 데이터가 커지기 때문에 압축해서 인코딩하는 방법이 더 좋은데요.
FlashPunk의 map Entity에서 바로 불러오도록 만들어 봤습니다.



맵데이터를 임베딩 한 후, map Entity객체의 생성자 매개변수로 넘겨서 loadXML함수에 넘겨줍니다.
[Embed(source = "../assets/desert_640x480,32x32.tmx")] public static const MAP_DESERT:Class;
(Maps.as파일로 임베딩할 자원만 모아 놓았습니다. 사용할때는 Maps.MAP_DESERT 이렇게 불러오고요)

private function loadXML(xml:Class):void
{
   // 불러온 데이터 디코딩, 압축해제
   var rawString:String = XML(new xml).child("layer").child("data");
   var bytes:ByteArray = ByteArray(Base64.decode(rawString));
   bytes.uncompress();
   
   // 맵에 타일 셋팅
   for (var i:int = 0; i < bytes.bytesAvailable; i++)
   {
      var index:int = bytes.readInt();
      _map.setTile(i % 10, Math.floor(i / 10), index-1); // 10은 320/32=10
   }
}

World Entity객체에 맵 엔티티를 add()해주기만 하면 됩니다.
그리고 Base64 인코더,디코더가 플렉스 프로젝트에선 쓸 수 있지만 액션스크립트 프로젝트에선 쓸 수 없는것 같습니다. 그래서 따로 Base64.as파일을 준비해야 합니다.
여기서 Base64에 대한 자세한 설명과 함께 Base64.as파일도 받을 수 있습니다.

이 블로그의 인기 게시물

FlashPunk (Flash Game Engine)글 제목

github에서 actionscript 검색하다 우연히 발견한 플래시 2D 게임엔진. http://flashpunk.net/ 코드를 한참 들여다보다 잘 감이 안잡혀서 검색해봤더니 쓰는 사람들이 말하길 동영상 강좌 보고 하니 쉽다고 하길래 홈페이지 가봤다. 강좌가 잘되어 있다.^^ (동영상강좌가 아주 좋다) 맛배기로  첫번째 강좌 FlashDevelop를 사용해서 셋팅하는 법부터, 프로젝트 구성하는 법까지 알려줌

플래시 빌더 (Flash Builder) 컬러 테마 변경

플래시 빌더 전체 색상은 흰색 위주로 되어 있는데, 오래보기엔 눈이 좀 불편하다. 따로따로 색상을 적용할 순 있지만 너무 번거롭고. 그래서 컬러테마 적용을 검색해봤다. 역시나 좋은 글이 있었다. 에디터 컬러 테마 변경 http://www.robertbak.com/wordpress/2010/04/dark-themes-for-flash-builder/ 위 글을 참고하면 된다. 위 글에서 요점만 요약하면 http://www.eclipsecolorthemes.org  여기서 테마(EPF)를 받은 후, 플래시 빌더 메뉴에서 File -> import -> other 를 선택한 다음, 팝업 메뉴가 뜨면 General에 있는 Preferences 선택 후 다운받은 EPF파일을 선택해주면 된다. 이클립스 안에 있는 마켓에서 eclipse color theme를 검색 해서 설치해도 됨. 인터페이스 색상 변경은 애석하게도 아직 못찾았다.