2010-08-23 2 views
0

내가 소스가없는 SWF 파일을로드하는 데 UILoader를 사용하고 있습니다. 이러한 SWF 파일은 AS2에서 만들어졌습니다. 그들은 마스크를 사용합니다. 너비와 높이가 마스크되지 않은 값을 반환합니다.AS3에서 마스크가있는로드 된 SWF의 가시적 인 크기를 얻는 방법은 무엇입니까?

나는 클립의 눈에 보이는 너비와 높이를 찾아서 올바르게 크기를 조정할 수 있습니다.

예를 들어 SWF가 50x50 공간에 들어가기를 원합니다. 보이는 SWF는 65x65입니다 (그러나 나는 이것을 모릅니다) 그리고 마스크되지 않은 크기는 100x100입니다. 로드 된 무비 클립의 너비와 높이를 50x50으로 설정하면 Flash에서 마스크되지 않은 부분을 기준으로 클립의 크기가 조절되고 클립 크기가 너무 작아집니다. SWF 내용을 제어 할 수 없으므로 너비/높이를 재정의하거나 마스크 크기를 가져올 수 없습니다.

답변

0

아이디어 몇 다음 AS2의 SWF를 디 컴파일

  • 방법 1, 다음 2 마스크의 폭 & 높이

  • 방법을 반환 새로운 AS2 만들기 폭 & 높이 속성을 오버라이드 (override) swf,로드하려고하는 swf의 마스크의 크기를 & 검색합니다. AS2를 사용하지 않으므로 논리를 설명 할 것입니다. 동영상의 마스크 속성을 테스트합니다 (null이 아닌 경우). 너비가 &이면 높이를 반환합니다. null이면 각 자식에 대해 동일한 테스트를 수행하고, 하나의 자식이 true 값을 반환하면 루프에서 빠져 나와 너비를 반환합니다. & 높이 그 아이 마스크의 물론, 이것은이 더 crossdomains 문제가없고, 내용이없는 경우, 당신은 ... 더 큰되는 마스크 찾아

1

을 시도 할 수 너무 잘 몇몇 아이들이 이러한 경우에 마스크를 사용하는 경우 작동하지 않습니다 (의 BitmapData가 크기 제한이) 너무 크고,이 작업을해야합니다 :

function handleComplete(e:Event):void { 
    var bmd:BitmapData = new BitmapData(loader.width,loader.height,true,0); 
    bmd.draw(loader); 
    var rect:Rectangle = bmd.getColorBoundsRect(0xff000000,0xff000000,true); 
    trace(rect); 
} 

이 당신에게 알파 값 0xFF로 (완전 불투명) 모든 픽셀을 둘러싸는 사각형을 얻을 것이다.

관련 문제