2011-05-26 60 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