我正在尝试通过SWFLoader类在我的Air Application中加载本地SWF应用程序。 SWFLoader
类显示在新的Window
中。因此,当Flash应用程序调整大小时,我正在尝试自动调整窗口大小。但这是问题所在。当加载器App的大小调整后,SWFLoader不会收到任何事件。
问题似乎是沙箱限制。我能够调用我在SWFLoaders内容的childSandboxBridge
中设置的parentSandboxBridge
和LoaderInfo
对象中的方法(加载的SWF应用程序)。但是当我调整加载的应用程序时,我无法收听任何ResizeEvents或类似内容。
我知道Loader
类和codeExecution属性的解决方法,但我不想绕过Air Sandbox - 如果可能的话。
任何人都可以帮我吗?
提前致谢
答案 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);
}