Flex加載多個Module時出現“TypeError: Error #1034: 強制轉換類型失敗”錯誤

     使用Accodian加載不同Module時,使用combobox時切換選項時,出現錯誤TypeError: Error #1034: 強制轉換類型失敗

 

     出現這種錯誤的原因在於 ModuleLoader shared code problem 當Module中使用managers時(如PopUpManager,DragManager, HistoryManager等)則可能出現這個問題,

     當application裏在loader之前沒有引入這些manager的引用時,manager的方法是靜態方法,整個應用程序中創建了一個該manager接口的singleton實例, 但module僅在自己的 Application domain中使用該單例, 當多個module使用同一個單例manager且main application沒有使用時,就會出現這個空對象引用問題。第一個引入某manager的module不能將該manager接口的 singleton跟其他module共享,其他module調用該Manager的方法時,應用程序不會再創建該manager接口的實例,這個 module就無法引用到該manager接口的實例,就出現了空對象引用問題.

 

     解決方法:在ModuleLoader 的creationComplete方法中加入如下代碼: moduleLoader.applicationDomain = ApplicationDomain.currentDomain; 就可以在Application裏切換多個module而不需要在Application裏明文引用單例manager聲明。

     另外,推薦在moduleloader做切換的時候,加上:moduleLoader.unloadModule再做moduleLoader.loadModule()。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章