在具有调整大小功能的新Air窗口中加载外部SWF应用程序

时间:2010-03-08 12:44:29

标签: flex flash air

我正在尝试通过SWFLoader类在我的Air Application中加载本地SWF应用程序。 SWFLoader类显示在新的Window中。因此,当Flash应用程序调整大小时,我正在尝试自动调整窗口大小。但这是问题所在。当加载器App的大小调整后,SWFLoader不会收到任何事件。

问题似乎是沙箱限制。我能够调用我在SWFLoaders内容的childSandboxBridge中设置的parentSandboxBridgeLoaderInfo对象中的方法(加载的SWF应用程序)。但是当我调整加载的应用程序时,我无法收听任何ResizeEvents或类似内容。

我知道Loader类和codeExecution属性的解决方法,但我不想绕过Air Sandbox - 如果可能的话。

任何人都可以帮我吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

(注意:其他安全沙箱问题可能是您问题的一部分。那就是......) 如果你的sandboxBridge已经设置好,并且你可以像你提到的那样调用方法,那么你可以发送和监听通过swfLoader冒泡的事件(并且它们确实通过了)。

作为测试,我会尝试在加载的swf捕获其内部resizeEvent时调用带有bubbles = true的测试flash.events.Event。 (默认情况下,ResizeEvents不会冒泡,可能是您问题的根源。)

答案 1 :(得分: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);
}