2011-09-01 80 views
0

我使用一個SWF文件,該文件使用ExternalInterface公開函數和事件。這裏是一個暴露功能的例子:在Flex中嵌入SWF文件並與ExternalInterface函數交互

ExternalInterface.addCallback("myFunction", ExecuteMyFunction); 

如果我把文件嵌入HTML頁面,我可以使用JavaScript訪問這些函數。 SWFLoader組件,像:

現在,我使用的MX動態嵌入在Flex應用程序相同的SWF文件

<mx:SWFLoader id="myLoader" source="http://localhost/file.swf" autoLoad="true"/> 

我試圖訪問這些暴露的職能和活動,但我找不到如何與Flex應用程序進行交互。我想能夠調用的函數從JavaScript一樣,如:

myLoader.myFunction(); 

我如何可以訪問由Flex內ExternalInterface的公開的函數?

+0

我的研究,我發現,你不能。我通過從嵌入式SWF生成Flash事件來解決此問題。另外,我在SWF中製作了「公共」功能。然後,使用SystemManager,您可以調用這些。希望這有助於他人。 – Ben

回答

0

從本質上講,你需要做這樣的事情:

var mySubApp:* = (myLoader.content as SystemManager).application; 
mySubApp.myFunction(); 

此鏈接有更多的細節:

Accessing sub-applications from the main application

+0

謝謝!我還發現crossdomain.xml文件是必需的,並且此代碼只能從URL(不在Flex中的調試/開發中)工作。 – Ben