You smiled and talked to me of nothing and I felt that for this I had been waiting long.

          The trees come up to my window like the yearning voice of the dumb earth.

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            19 Posts :: 10 Stories :: 25 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(4)

          隨筆分類(34)

          隨筆檔案(30)

          收藏夾(10)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          需求背景
          通過樹形菜單加載多個不同的module。
          問題現(xiàn)象:module頁面存在拖動,Popup,Alert或者colorpicker出現(xiàn)錯誤信息:
          TypeError: Error #1034: 強制轉(zhuǎn)換類型失敗:無法將 mx.managers::PopUpManagerImpl@7155ac1 轉(zhuǎn)換為 mx.managers.IPopUpManager。
          解決方案
          在Application加入如下代碼引用:
              <mx:Script>
                  
          <![CDATA[
                      
          import mx.managers.DragManager;
                      
          import mx.managers.IPopUpManager;            
                      
                      
          /* Create dummy variables. */
                      
          //避免出現(xiàn):無法將 mx.managers::PopUpManagerImpl@52a09a1 轉(zhuǎn)換為 mx.managers.IPopUpManager 錯誤
                      private var dragManager : DragManager;
                      
          private var popUpManager : IPopUpManager;
                    
                      //process....

                  ]]>
              </mx:Script>
          問題原因分析
          屬于ModuleLoader shared code problem.
          當Module中使用managers時(如PopUpManager,DragManager, HistoryManager等)則可能出現(xiàn)這個問題(當application里在loader之前沒有引入這些manager的引用時)。
          manager的方法是靜態(tài)方法,整個應(yīng)用程序中創(chuàng)建了一個該manager接口的singleton實例,但module僅在自己的Application domain中使用該單例, 當多個module使用同一個單例manager且main application沒有使用時,就會出現(xiàn)這個空對象引用問題:第一個引入某manager的module不能將該manager接口的singleton跟其他module共享,其他module調(diào)用該Manager的方法時,應(yīng)用程序不會再創(chuàng)建該manager接口的實例,這個module就無法引用到該manager接口的實例,就出現(xiàn)了空對象引用問題.
          參考資料:Flex sdk源碼。

          目前在Application創(chuàng)建了些Application范圍內(nèi)沒有使用到的"木偶變量",從代碼可讀性上來說不是很好。有其他比較好的解決方案的同學(xué)麻煩請告之下,:)


          posted on 2008-11-22 17:33 鉤子 閱讀(10485) 評論(1)  編輯  收藏 所屬分類: jeeria工作筆記

          Feedback

          # re: FLEX:multiple moduleloader occur #1034 error 2008-11-24 10:14 鉤子
          同事推薦了個更好的辦法:
          在ModuleLoader 的creationComplete方法中加入如下代碼:
          moduleLoader.applicationDomain = ApplicationDomain.currentDomain;
          就可以在Application里切換多個module而不需要在Application里明文引用單例manager聲明。比我上面所說的方法更好的能解決問題而且,代碼可讀性更好。
          另外,推薦在moduleloader做切換的時候,加上:
          moduleLoader.unloadModule再做moduleLoader.loadModule().

          在這里做個小記。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 即墨市| 永泰县| 华安县| 吉林市| 射阳县| 喀喇沁旗| 黄大仙区| 盈江县| 手游| 雷州市| 竹北市| 盘山县| 邹平县| 永顺县| 临夏县| 乌审旗| 泰州市| 南皮县| 霍林郭勒市| 大庆市| 阜新市| 甘洛县| 涟源市| 黄石市| 鱼台县| 崇义县| 昔阳县| 应用必备| 威信县| 安徽省| 玉龙| 沙坪坝区| 南阳市| 石嘴山市| 什邡市| 科尔| 北京市| 浮梁县| 郁南县| 山东| 巴林右旗|