2010-05-06 53 views
0

我在ActionScript中加載一個SWF文件。到目前爲止沒有問題,但我沒有找到一種方法來訪問它的一個函數,最好的情況是,如果我可以訪問swf的mxml部分中的主函數。Flex 3(動作腳本):如何從加載的SWF文件訪問功能?

這裏是主MXML文件的屬於該應該加載並訪問其他SWF swf的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="basket();"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.controls.SWFLoader; 

      private function basket(): void 
      { 
       var swfLoader: SWFLoader = new SWFLoader(); 
       swfLoader.addEventListener(Event.COMPLETE, handleSWFLoaded); 

       try { 
        swfLoader.load("../../data/InternalSWF.swf"); 
       } catch (error: Error) { 
        trace("Couldn't load file !"); 
       } 
      } 

      private function handleSWFLoaded(event: Event): void 
      { 
       var swfApp:* = event.target.content; 

       // This both ways don't work... 

       //if (swfApp.hasOwnProperty("initApp")) { 
       // var initApp:Function = (swfApp["initApp"] as Function); 
       // initApp(); 
       //} 

       // swfApp.initApp(); 
      } 
     ]]> 
    </mx:Script> 

    <mx:Text id="output" width="100%" textAlign="center" /> 

</mx:Application> 

if語句 「如果(swfApp.hasOwnProperty(」 initApp「)) {「永遠不會是真的,並且調用」swfApp.initApp()「表示該函數不存在。

在原始版本中,我爲HTTPStatusEvent.HTTP_STATUS,IOErrorEvent.IO_ERROR和SecurityErrorEvent.SECURITY_ERROR添加了事件偵聽器。但是除了HTTP_STATUS = 0之外,它們都不會被調用。

我是如何嘗試做這個錯誤的整個想法?

回答

0

實測值後:)

後瑞士法郎加載可以使用以下代碼來訪問內部函數(在本例中initApp())之後幾天的溶液:

public function getInnerSWF():Object 
{ 
    var sysMan:SystemManager = swfLoader.content as SystemManager;<br> 
     return sysMan.document; 
} 

getInnerSWF().initApp();