2008-10-29 8 views
8

여기 상황이 있습니다. 외부 .swf를로드하는 셸이 있습니다. 이제 .swf는 800x600이지만 애니메이션 조각이며 무대 밖에서 확장되는 요소가 있습니다. .swf를 셸에로드하고 width 속성을 호출하면 스테이지에서 벗어나는 요소가 포함되어 있기 때문에 1200을 반환합니다.로드 된 swf 스테이지의 크기

이것은 내가 원하는 것이 아닙니다. 이상적으로 '계산 된 너비'를 반환하는 속성과 '기본 너비'를 반환하는 속성이있을 것입니다. 이러한 속성이 존재합니까? 그렇지 않은 경우 가장 좋은 해결 방법은 무엇입니까?

답변

15

SWF를로드 한 객체 Loader에서 생성 된 FLA로 정의 된로드 된 SWF의 폭과 높이를 찾을 수 있습니다.

swfLoader.contentLoaderInfo.width 
swfLoader.contentLoaderInfo.height 

이렇게하면 FLA 속성에 정의 된 치수가 항상 표시됩니다. 어떤 이미지, MovieClips 또는 무엇을 무대 밖으로 확장해도 아무런 차이가 없습니다.

stage.stageWidthstage.stageHeight 속성은 항상 스테이지의 너비를 반환하며 스테이지는 항상 가장 많은 SWF입니다. 즉, 항상 셸의 스테이지 크기를 나타냅니다. Flash 응용 프로그램에는 단 하나의 스테이지 만 있습니다.

+0

'스테이지'속성에 대한 정보를 제공해 주셔서 감사합니다. 반 직관적이지 않습니까? –

+0

좋은 사람! 이것은 완전히 작동합니다! 로더 정보 객체를보고 나에게 발생하지 않았다 - 나는 보통 그냥로드 '진짜'내용을 기다리는 동안에도를 유지하기 위해 일회용 변수를 사용하지만, 나는 시도하고 미래에 주위를 유지 할 수 .. . 감사! –

+0

젠장, 심지어 더 나은, 그냥 myMovieClip.loaderInfo.width 말할 수있는 대신 원래 swfLoader 주위에 다른 변수를 유지하는 - Loader 통해로드 된 모든 자체 로더 개체에 대한 참조를 유지합니다! –

0

content loader info 개체에 올바른 너비와 높이가 포함될 가능성이 높습니다. 나는 그것을 결코 보장 할 수 없으므로 나 자신을 점검 한 적이 없다. 문서는 '명목상'이라고 말하고 '실제'와 대조하여 합리적인 것처럼 보입니다.

몇 가지 다른 옵션이 있습니다. 외부 swf를 마스크 할 수 있습니다. 무대의 크기 인 마스크를 만들고 그 아래에 모든 내용을 넣으십시오. Y는 0 : 0에서 스테이지에 폭과 높이 경기 다른 아이디어는 X 대신에 0의 알파 그것에 설정 직사각형에 기초하여 동영상 클립을 생성하는 것이다. 인스턴스 이름을 지정하고로드 될 때 크기에 해당 값을 사용하십시오.

+0

빠른 수정이 필요했고 Matt의 답변을 확인할 시간이 없었습니다. 빠른 수정은 제안이었습니다.로드 된 .swf 내부에 두 개의 MovieClip을 만들었고 스테이지의 크기와 일치하는 하나의 MovieClips와 무대를 무너 뜨린 요소들이 만든 경계를 포위하고 초과했습니다. –