2010-03-08 3 views
3

SWF 응용 프로그램에서 SWFLoader 클래스를 통해 로컬 SWF 응용 프로그램을로드하려고합니다. SWFLoader 클래스는 새 Window에 표시됩니다. 따라서 Flash 응용 프로그램 크기를 조정할 때 창 크기를 자동으로 조정하려고합니다. 그러나 여기에 문제가 있습니다. 로더 앱의 크기를 조정할 때 SWFLoader에 이벤트가 발생하지 않습니다.크기 조정 기능이있는 새로운 Air 윈도우에 외부 SWF 응용 프로그램로드

문제는 샌드 박스 제한 사항 인 것 같습니다. childSandboxBridgeparentSandboxBridge SWFLoaders 내용 (로드 된 SWF 응용 프로그램)의 LoaderInfo에 설정된 객체를 호출 할 수 있습니다. 하지만 내가로드 된 응용 프로그램의 크기를 조정할 때 어떤 ResizeEvents 또는 뭔가를들을 수 없습니다.

Loader 클래스와 codeExecution 속성의 해결 방법을 알고 있지만 가능한 경우 에어 샌드 박스를 무시하고 싶지 않습니다.

아무도 도와 줄 수 있습니까? 사전에

감사

답변

2

(참고 :. 다른 보안 샌드 박스 문제는 문제의 일부가 말했다 ... 할 수있다) 당신의 sandboxBridge가 설정되어있는 경우 당신이 언급 한 바와 같이 당신은, 당신이 그것을하지만 메서드를 호출 할 수 있습니다 SwfLoader를 통해 거품을 일으키는 이벤트를 디스패치하고 수신 대기 할 수 있습니다.

로드 된 swf가 내부 resizeEvent를 캡처 할 때 테스트로 flash.events.Event bubbles = true를 테스트하는 것이 좋습니다. ResizeEvents는 기본적으로 버블 링되지 않으며 문제의 원인이 될 수 있습니다.

+0

"(ResizeEvents는 기본적으로 버블하지 않고 문제의 원인이 될 수있다)." 아, 그건 사실 문제 일 수 있습니다. 해결 된 방법으로 해결했습니다.로드 된 App에서 ResizeEvent를 듣고 parentSandboxBridge 개체의 크기를 조정하는 함수를 호출합니다. 하지만 팁을 줄 것입니다. 감사! – Timo

1

나는 childSwf에 넣어,이 방법을 찾을 :

addEventListener(Event.ADDED,added) 

function added(e){ 
    if (root.parent.parent){ 
    root.parent.parent.stage.addEventListener(Event.RESIZE, mainResizeHandler); 
} 

function mainResizeHandler(e:Event = null):void{ 
    trace("width: "+stage.stageWidth+" | height"+stage.stageHeight); 
} 
관련 문제