[Flash,ActionScript 3.0]DisplayObject cacheAsBitmap 속성의 적용시점 문제
[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.
DisplayObject 속성중에 cacheAsBitmap을 사용해 본 적이 있나요?
cacheAsBitmap은 시각화된 객체를 Bitmap으로 캐싱해주는 역할을 하는 속성입니다. 이것이 true가 되면 DisplayObject는 Bitmap처럼 되는 것이지요. Flash에서 Bitmap과 상반되는 것이 Vector입니다. 일반적으로 Flash에서 그래픽적인 요소는 거의 Vector로 처리되지요. Bitmap과 Vector에 대한 차이점과 장단점을 굳이 설명안하겠습니다.
단지 제가 궁금하고 해결하고 싶은 문제는 cacheAsBitmap속성이 적용된 것을 확대/축소할때 입니다.
이 속성을 true로 하고 이동처리(마우스 Drag등)을 하는 것과 안한것은 엄청난(?)속도 차이를 보입니다. 복잡한 Graphic이 들어가고 이동이 필요한 경우 cacheAsBitmap을 true로 설정하여 애플리케이션의 퍼포먼스를 높힐 수 있지요. 하지만 cachAsBitmap은 메모리와는 적입니다. 가령 확대/축소할때 가장 큰 문제가 되는데 Bitmap이 확대/축소할때 이미지는 그 크기만큼 메모리를 잡아먹습니다. 아래 제가 쓴 글을 보시면 이해될 겁니다.
[Flex/AIR] 메모리의 무서운 적! DisplayObject의 cacheAsBitmap 속성
저는 이동시에는 cacheAsBitmap을 true로 설정하고 확대/축소할때는 false로 설정해서 퍼포먼스 개선을 하려고 합니다. 하지만 cacheASBitmap을 설정하더라도 적용되는 시점이 문제입니다. 확대/축소하기 전에 false로 지정하고 바로 확대/축소를 하면 메모리를 잡아먹는다는 것이지요. 다음 Render시점에서 확대/축소를 해야하는 것인가 생각이 드는데 아직 뾰족한 묘안이 없습니다.
혹시 저와 같은 경험을 하셨다던가 아니면 해결책을 알고 계신분 있다면 댓글 부탁드리겠습니다.
'Adobe Flash Platform' 카테고리의 다른 글
| ActionScript 3.0을 알자! (7) | 2009/06/26 |
|---|---|
| [Flash,ActionScript3.0]Vector와 Bitmap 이미지를 이용한 최적화된 애플리케이션 만들기 (12) | 2009/06/15 |
| [Flash,ActionScript 3.0]DisplayObject cacheAsBitmap 속성의 적용시점 문제 (10) | 2009/06/10 |
| Flash Catalyst/Flash Builder 4/Flex SDK 4에 대해서 공부해보자. (4) | 2009/06/04 |
| Tour de Flex에 올라온 Flex 4 Preview 와 Plug-in 사용법 (6) | 2009/06/03 |
| [Adobe RIA 소식]Flash Catalyst 배포 (9) | 2009/06/03 |
-
2009/06/10 10:12지돌스타의 생각 Tracked from jidolstar's me2DAY
-
2009/06/23 21:00Flash Builder4 Beta에서 Google Map 구현하기 Tracked from Me2box.com




지돌스타님 머좀 여쭤바도 될까요???
flex 에서 tif 파일 어떻게 여는지
tif도 actionscript native 코드로는 읽을 수 없는 것으로 알고 있습니다. 움직이는 gif도 제대로 읽으려면 그것을 읽을 수 있는 코드를 만들어야했듯이 tif도 마찬가지일겁니다. TIFDecoder, TIFEncoder를 만들어 ByteArray단위로 처리하여 BitmapData로 만들어주는 코드를 만들어야 할겁니다. 아니면 오픈소스가 있을지 모르겠네요.
역시 저방법 밖에 없나 오픈소스는 뒤져도 안나오더라구요
네 답변 감사합니다~
만약 정말 찾을 수 없는 상황이라면 TIFF에 대한 스펙을 확인하셔서 직접 코딩하실 수 밖에 없겠네요. ^^;;
확대/축소하기 전에 false로 지정하고 바로 확대/축소를 하면 메모리를 잡아먹는다는 것이지요. 만약 요것만 문제라면... cacheAsBitmap 직접 구현하면 해결의 실마리를 찾을 수 있을 것도 같은 느낌이 오네요.
cacheAsBitmap 커스터마이징을 통해 극복하시라는 것이지요? 제가 생각해도 그 방법이 가장 맞는것 같습니다. 하지만 cacheAsBitmap이 제대로 적용/해제되는 시점이 명확히 렌더링되는 시점이라고 한다면 상관없을텐데... 테스트 해봐야겠어요. 더군다나 그렇게 된다면 cacheAsBitmap이 적용되는 명확한 시점 이후에 확대/축소를 적용해야하므로 그만큼 복잡도가 더해지게 되네요. 아무튼 해결방법을 여러테스트를 통해 알아보겠습니다.
의견 정말 감사해요.
지돌스타님 글에서 매우 많은것을 보고 배우고 있습니다.
특히나 오브젝트 풀은 현재 제가 하고있는 프로젝트에서 많은 성능 향상을 가져다 주었죠. 감사하게 생각하고있습니다..^^
저같은 경우는 gis 쪽이라서 생각보다 훠얼씬 큰 비트맵을 생성하게 되는데요..
물론 그것도 그리드화해서 다운으로 처리를 여차저차 어찌저찌 하였습니다만,
메모리가 꽤 잡아먹는건 딱히 움..ㅠ.ㅠ
저같은 경우는 캐쉬애즈비트맵을 사용하지 않습니다.
메모리에 비트맵 공간을 할당하고(지돌스타님께 배울 풀~ 딱풀!? 컥;) 벡터로 그린 데이터를 비트맵으로 떠서 넣고 빼고 하는 식으루요..
그리고 현재 회사의 연구진들과 주장하고 있는 데이터의 그리드(간략화)를 통한 퍼포먼스 향상을 진행시키고 있습니다.
whereis.co.kr
꽤나 큰 지도회사인데요 저희회사는 아니구요..
이쪽의 지도 기법들을 보면 벡터 입니다. 물론 벡터 그리고 비트맵으로 뜨긴 하는데
연구 분석하면서 본 결과 조금 가닥이 잡히고 있습니다만,
원래 무거운 벡터 맵쪽의 어플과 지돌스타님께서 마지막에 남기신 궁금증에 대한 비교자체가 가능 하려나 싶습니다만,
그냥 고마운 마음에 글한번 남겨봅니다..^^;
(두서가 없네요-_;)...
그럼 다음에 기회생기면 꼭 뵙고싶습니다=_=
저랑 지돌스타님이랑 닮았데요 ㅎ..;
안녕하세요. 라피르님~ ^^
사진의 경우 움직이지 않기 때문에 기본적으로 비트맵이죠. 하지만 어떤 선,면 표현의 경우 벡터가 훨씬 유리하죠. 이게... 같은 지도쪽이라도 어떤 분야에 따라 선택하기 나름이게 되는데요. 스타플의 별지도의 경우 이미지가 있는게 아니라 프로그램 실행시 동적으로 데이터를 가져와 그려주는 방식입니다. 그래서 벡터값이 많으면 많을수록 움직이는데 느려지죠. 그래서 비트맵을 사용하고자 하지만 그냥 비트맵을 떠버리는 것은 그 순간 비트맵만드는 자체가 큰 자원을 소비하는 것, 그리고 별의 경우 계속 반짝반짝 움직여줘야해서 무조건 비트맵을 만들어 쓸 수 없다는것... 뭐 이런종류의 문제들로 인해 cacheAsBitmap을 이용하고자 했습니다. 하지만 적용시점으로 어려움을 겪게 되네요.
적절히 해결하게 되면 글을 하나 남기도록 하겠습니다. ㅎㅎ
지식이 부족해서 도움은 못드리지만....
어떻게 해결하실지 기대되네요.~
혹시 해결되시면 포스팅 해주시면 좋겠습니다.^^
화이팅~!!
감사합니다. 아래 링크를 보세요. ^^
http://blog.jidolstar.com/538