使用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()。