Apache flex 在具有调整大小功能的新空气窗口中加载外部SWF应用程序
我正试图通过SWFLoader类在Air应用程序中加载一个本地SWF应用程序。Apache flex 在具有调整大小功能的新空气窗口中加载外部SWF应用程序,apache-flex,flash,air,Apache Flex,Flash,Air,我正试图通过SWFLoader类在Air应用程序中加载一个本地SWF应用程序。SWFLoader类将显示在新的窗口中。因此,我尝试在Flash应用程序调整大小时自动调整窗口大小。但问题是。调整加载程序应用程序的大小后,SWFLoader不会获取任何事件 问题似乎在于沙箱限制。我能够在SWFLoaders内容(加载的SWF应用程序)的LoaderInfo中设置的childSandboxBridge和parentSandboxBridge对象中调用方法。但是,当我调整加载的应用程序的大小时,我无法收
SWFLoader
类将显示在新的窗口中。因此,我尝试在Flash应用程序调整大小时自动调整窗口大小。但问题是。调整加载程序应用程序的大小后,SWFLoader不会获取任何事件
问题似乎在于沙箱限制。我能够在SWFLoaders内容(加载的SWF应用程序)的LoaderInfo
中设置的childSandboxBridge
和parentSandboxBridge
对象中调用方法。但是,当我调整加载的应用程序的大小时,我无法收听任何ResizeEvents或类似的内容
我知道Loader
类和codeExecution属性的解决方法,但如果可能的话,我不想绕过Air沙箱
有人能帮我吗
提前感谢(注意:其他安全沙箱问题可能是您的问题的一部分。也就是说…)
如果设置了sandboxBridge,并且您可以像前面提到的那样通过它调用方法,那么您可以调度和侦听通过swfLoader冒泡的事件(它们确实冒泡通过)
作为测试,当加载的swf捕获其内部resizeEvent时,我会尝试调度一个测试flash.events.Event,其中bubbles=true。(默认情况下,ResizeEvents不会冒泡,可能是问题的根源)。我找到了这种方法,将其放入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);
}
“(ResizeEvents默认情况下不会冒泡,可能是问题的根源)。”啊,好吧,这可能确实是问题所在。我已经通过一个变通方法解决了这个问题,在这个变通方法中,我在加载的应用程序中侦听ResizeEvent,并调用一个函数在parentSandboxBridge对象中调整大小。但我会试试给你小费。谢谢