2013-07-27 10 views
0

저는 Flash CS6와 AIR를 사용하여 모바일 게임을하고 있습니다. 또한 동일한 플랫폼에서 디자인 및 코딩 (starling 등을 사용하지 않음).Dispose()를 사용하여 MovieClip을 비트 맵으로 변환

무비 클립 (정적, 애니메이션이 아님)을 비트 맵으로 동적으로 변환하고 잘 동작합니다. 하지만이 과정을 통해 bitmapData가 메모리에 캐싱되고 많은 양의 메모리가 필요하다는 것을 깨닫게됩니다. 그런 다음 dispose()에 의해 bitmapData에 무대에 추가 된 후 결정합니다. 그러나 무대와 그 곳 어디에서나 제거됩니다.

내 코드;

var target:MovieClip = new Ex_mc2(); 
target.x=100; 
target.y=300; 
addChild(target); 

var bounds:Rectangle = target.getBounds(this); 
var bmpData:BitmapData = new BitmapData(Math.floor(bounds.width), Math.floor(bounds.height), true, 0); 
var bmpMatrix:Matrix = target.transform.matrix; 
bmpMatrix.translate(-bounds.x, -bounds.y); // Draw bitmap 
bmpData.draw(target, bmpMatrix); 

var bmp:Bitmap = new Bitmap(bmpData); 
bmp.x=100; 
bmp.y=300; 
addChild(bmp); 

removeChild(target); 
//bmpData.dispose(); I want to use this and i dont want my bmp disappear 

일주일 동안 솔루션을 검색했지만 알아낼 수 없습니다. 내 질문은;

movieClip을 비트 맵으로 변환하여 메모리를 확보 할 수 있습니까? 무대에 정적 PNG 파일을 추가하는 것과 같은가요?

답변

0

BitmapData - 실제로 화면에 표시되는 내용입니다. 형식은 BMP와 거의 동일하지만 바이트 순서가 바뀝니다. Bitmap은 이미지 컨테이너를 화면에 출력하고 일반적인 DisplayObject API를 제공하는 디스플레이 컨테이너 일뿐입니다.

따라서 BitmapData.dispose()을 사용하면 이미지가 차지하는 메모리를 실제로 확보 할 수 있으며 그 후에는 Bitmap 컨테이너에 아무 것도 표시되지 않습니다.

+0

고마워요, 그렇다면 바로 거기에 차이가 정적 PNG 또는 비트 맵 데이터를 사용하여 영화 클립을 변환하는 단계를 추가하는 것입니다? 그리고 메모리 사용량을 처리해야합니까? – mtilhan

+0

수정. 두 경우 모두 이미지 데이터를 나타내는'BitmapData' 객체를 갖습니다. –

+0

설명해 주셔서 감사합니다. 내 일주일을 낭비했습니다. – mtilhan