2010-08-06 67 views
1

我有兩個用Flex編寫的Web應用程序我想集成。我想要一個Flex應用程序(讓我們稱之爲應用程序A)來調用第二個Flex應用程序(讓我們稱之爲應用程序B)。應用程序A只能訪問應用程序B的swf文件(不是源代碼)。當應用程序A調用應用程序B時,它應該能夠將一些數據傳遞給應用程序B.應用程序B被調用後,它應該能夠將一些數據傳遞迴應用程序A.這兩個應用程序將託管在同一臺服務器上,但將使用不同的服務器代碼兩個Flex應用程序之間的通信

實現這種方法(或其中一種方法更加精確)的最簡單方法是在應用程序A(按鈕,鏈接,菜單項等)上調用應用程序B的UI元素。但是在這種情況下,兩個Flex應用程序無法直接通信(因爲一次只有一個是活動的),他們必須通過服務器代碼進行通信,這是我想避免的。

簡而言之,應用程序A應調用應用程序B,將一些數據傳遞給它。應用程序B應該做它的工作,顯示一些內容,並有一個意思是將一些數據傳回給應用程序A.

我知道LocalConnection,我也見過類似的question,但在那種情況下,我會將這兩個應用程序都放在同一瀏覽器窗口中。這是可以接受的一些擴展,但只有當應用程序B包含在應用程序A(不是如果他們都在同一個HTML頁面)。 LocalConnection會在這種情況下工作嗎?

對於如何實施這種溝通,你有什麼建議嗎?

回答

1

您可以使用LocalConnection在兩個基於Web的SWF之間直接通信。兩個應用程序都在同一個瀏覽器窗口中應該沒有限制。他們只需要在同一臺機器上運行。

我不確定您的意思是讓一個Flex應用程序調用第二個。但是,您應該可以使用NavigateToURL加載另一個頁面。我相信它支持新的窗口,這將有效地推出另一個應用程序。你也可以用iFrame和ExternalInterface來模擬一些東西。

1

還有一種方法可以做到這一點。您可以通過定期裝載機加載()的第二瑞士法郎,比你可以這樣做:

var app:Class = mLoader.contentLoaderInfo.applicationDomain.getDefinition("mx.core::Application"); 

..或者類似的東西(這個人是不是工作,我不知道爲什麼,但更多的調整將工作)。請記住,您還可以使用describeType在運行時查找有關類的更多信息。 因此,當你得到應用程序,我認爲從那裏可能會有接口或事件調度員/聽衆......這取決於你:)

相關問題