2011-05-26 36 views
1

我试图使用SWFLoader来加载应用程序并将加载的应用程序添加到我的显示列表。不能将应用程序添加到显示列表

public function onComplete(e:Event):void { 
    someContainer.addChild((e.target.content)); 
} 

//somewhere in main 
var loader: SWFLoader = new SWFLoader(); 
loader.addEventListener(Event.COMPLETE, onComplete); 
loader.load(urlToSwf); 

我得到的errormessage的

cannot convert [email protected] to mx.core.IUIComponent 

有谁告诉我为什么,这将不起作用或我怎么能解决这个问题?

感谢, 西姆斯

回答

1

,因为你正在尝试添加到阶段出现的问题是类型的SystemManager的,当然你想你的应用程序添加到显示列表中。

那么试试这个:

<mx:Script> 
    <![CDATA[ 
     import mx.events.FlexEvent; 
     import mx.managers.SystemManager; 

     private var _systemManager:SystemManager; 

     protected function onLoaderComplete(event:Event):void 
     { 
      _systemManager = SystemManager(loader.content); 
      _systemManager.addEventListener(FlexEvent.APPLICATION_COMPLETE, onApplicationComplete); 
     } 

     private function onApplicationComplete(event:FlexEvent):void 
     { 
      mainContainer.addChild(_systemManager.application); 
     } 
    ]]> 
</mx:Script> 

<mx:SWFLoader id="loader" source="main.swf" width="800" height="600" autoLoad="true" complete="onLoaderComplete(event)"/> 

<mx:VBox id="mainContainer"/> 

干杯

+0

谢谢,但它仍然行不通。我收到errorMessage无法将_Main_mx_managers_SystemManager @ 3ca6eb9转换为mx.managers.SystemManager。 – Sims 2011-05-26 09:29:54

+0

你确定你有复制粘贴正确吗? 当我在我的Flash Builder中运行它时,它完美地工作。 – 2011-05-26 09:37:14

+0

我希望我这么做......我正在写actionscriptCode而不是FlexCode,如果这有什么区别的话。 – Sims 2011-05-26 09:39:20

3

首先,我不建议你Flex应用程序加载到另一个Flex应用程序。准备好使用Flex框架中的模块。您可以阅读更多详细信息here

什么特别的情况下,你应该read addChild() documentation

注意:当指定的子参数来 方法 DisplayObject类型,参数必须 实现IUIComponent接口 添加作为一个容器的孩子。所有的Flex组件都实现了这个 接口。

因此,您可以先添加UIComponent,然后在其中添加系统管理器。

+0

是的,我正要说同样的事情。模块人。他们不难创造。 – 2011-05-26 13:10:37

0

只需将SWFLoader添加到容器即可。

public function loader_completeHandler(event:Event):void 
{ 
    var loader:SWFLoader = event.target as SWFLoader; 
    someContainer.addChild(loader); 
} 

//somewhere in main 
var loader:SWFLoader = new SWFLoader(); 
loader.addEventListener(Event.COMPLETE, loader_completeHandler); 
loader.load(urlToSwf); 
+0

这就是即时尝试。我想操纵加载的应用程序中的一些对象,但我没有克服SystemManger莫名其妙..这就是我现在的问题。 – Sims 2011-05-26 11:45:15