我使用SWFLoader加载SWF。在加载的.SWF中,this.parentApplication返回NULL。在互联网上搜索了八个小时。
按要求列出代码:
<?xml version="1.0"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
initialize= "Init();"
visible="false"
>
<mx:Script>
<![CDATA[
import flextrace.Dumper;
private var txt_event:TextEvent = new TextEvent(TextEvent.LINK,false,false,"next.xml");
private var timer:Timer = new Timer(10000);
private function Init():void {
timer.addEventListener(TimerEvent.TIMER,timer_handlr);
timer.start();
}
private function timer_handlr(event:Event) {
Dumper.info("timer_handlr");
if (this.parentApplication == null)
Dumper.info("null");
parentApplication.dispatchEvent(new TextEvent(TextEvent.LINK,false,false,"next.xml"));
}
]]>
</mx:Script>
</mx:Application>
答案 0 :(得分:1)
如果我理解正确的话,我只是通过Flex文档查看并查看了您的问题的答案:
Application对象的parentApplication属性永远不会;它是加载它的Application对象,或它为null(对于Application对象)。
因为,从应用程序调用它,它应该为null。
只是一个关于访问嵌套应用程序的快速链接(我还没有测试过解决方案,但仍然可以给你一些想法):Nesting Flex applications - weird issues..
希望,这会有所帮助:)
答案 1 :(得分:0)
RYAN GUILL:我尝试了你的建议 - 没有用。我使用以下代码替换了OP中代码中的dispatchEvent调用:this.dispatchEvent(new TextEvent(TextEvent.LINK,true,false,"next.xml"))
;你是说这应该触发了Text应用程序的TextEvent.LINK事件处理程序吗?它不起作用。
答案 2 :(得分:-1)
尝试 FlexGlobals.topLevelApplication ?