2011-01-26 23 views
1

我使用Flex Builder 3來構建一個相當大的項目。我遇到了模塊間相互踩踏以及應用程序/模塊之間的衝突。我的結構看起來像下面這樣:如何通過SWFLoader加載時指定ApplicationDomain.currentDomain?

主要應用 | --application 2 | --application 3 | --application 3

(應用2是主應用程序的孩子,而應用2和3是兄弟姐妹,應用2名兒童)

在現實中,它是比這更復雜,但是這是問題的開始。最後,我可以讓樹有四層,甚至可以有五層......如果它可以工作。主應用程序文件僅包含一個畫布和一系列按鈕。第二個應用程序包含一個垂直選項卡導航器,其中兩個選項卡中的畫布作爲容器,列表和樹視圖。應用程序3非常複雜,應用程序4中的事件日曆也是如此。只要不發生任何交互,所有內容都會加載並顯示正常。在查看模塊2和3時,都有組合框。第一個被訪問的工作正常,但第二個拋出錯誤,我認爲是沙箱侵犯。我將應用程序2,3和4轉換爲模塊,並使用ModuleLoader將它們帶入並指定ApplicationDomain = currentDomain。現在,最後(現在是模塊)中的日曆功能根本無法顯示。我可以跟蹤值和拋出警報框,所以我知道它至少是加載,但沒有顯示。作爲一個測試,我剝去了這個模塊,除了一個標籤上寫着「Test」並且它顯示正常,但是一旦我把它放到Canvas組件裏面,什麼也不顯示。但是,如果我將該模塊轉換回應用程序並使用SWFLoader加載它,它會顯示正常,但我確定只要我嘗試將另一個應用程序並行引入,我將返回到我所在的位置入門。我可以輕鬆地使用so.data和LocalConnections來回傳遞信息,但是如何以應用程序的形式加載SWF並指定應用程序域?將所有東西都作爲currentDomain存在並且玩起來會很好。

回答

2

我不知道我真正瞭解你的Blurb的,但如果你的標題是準確的,你可能會發現the sample on this page是有幫助的。

+0

這可能做到這一點,但是當我嘗試使用SecurityDomain中,它給了我一個沙箱衝突。如果我刪除該行,目前看來工作。我需要建立更多的「應用程序」並查看它們的行爲。我認爲LoaderContext是我需要的。 私有函數setMemberPanel():無效{ \t VAR上下文:的LoaderContext =新的LoaderContext(); // \t context.securityDomain = SecurityDomain.currentDomain的; \t context.applicationDomain = new ApplicationDomain(); \t memberContext.loaderContext = context; \t memberContext.source = 「btl_memberTools.swf」; } – 2011-01-26 17:10:01

相關問題