2010-04-23 2 views
0

SWFLoader 구성 요소를 사용하여 외부 SWF를로드 중입니다. 로드되는 swf가 마스크되어 일부만 표시됩니다. 그러나로드 될 때 swf (loader.content.width/loader.content.height)의 실제 크기는 마스크 된 영역을 포함하는 전체 swf입니다. 따라서로드 된 swf가 itemrenderer에 제대로 표시되지 않습니다. 전체 swf 내용의 크기를 가져 오는 대신 마스크 된 영역의 크기를 가져 오는 방법이 있습니까?마스크 된 내용으로 외부 SWF로드 - 너비/높이 필요

문제를 복잡하게 만드는 하나의 항목은 이미 만들어진 swf 파일이고 그 중 많은 수가 있다는 것입니다. 경우에 따라 스테이지의 크기가 가면 영역의 크기와 일치합니다. 다른 예에서는 마스크 된 영역의 무비 클립뿐만 아니라 실제 무비 클립의 실제 크기 (마스크가없는 경우)보다 스테이지가 더 큽니다 (또는 더 작을 수도 있음).

현재 로더를 사용하여 외부 swf를로드 중입니다. 일단로드되면 loader.content의 bmp를 작성하여 swf의 사본 (스크린 샷)을 만듭니다.이 순간에 화면에 애니메이션이 표시되는 것을 원하지 않기 때문에이 작업이 완료됩니다. loader.content.width를 사용하여 bmp의 크기를 설정하고 있습니다. & loader.content.height. 그런 다음 SWFLoader.source를 비트 맵으로 설정합니다.

답변

0

로드 된 swf에서 마스크를 찾을 수없는 경우에는 무차별 방식으로 표현할 수 있습니다. 투명 배경을 가진 BitmapData로 렌더링 한 다음 픽셀을 분석하여 불투명 한 영역이 끝나는 부분을 찾습니다. 똑똑하다면 수십 개의 샘플에 적합해야합니다 (swf 자체가 투명하지 않은 경우). 물론, 렌더링 부분은 지옥처럼 비싸지 만, 어쩌면 앱이 그러한 지연을 허용합니다 ...