代码:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"   
  4.   
  5.                    xmlns:s="library://ns.adobe.com/flex/spark"   
  6.   
  7.                    xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300">  
  8.   
  9.         <fx:Declarations>  
  10.   
  11.                 <!-- 将非可视元素(例如服务、值对象)放在此处 -->  
  12.   
  13.         </fx:Declarations>  
  14.   
  15.         <fx:Script>  
  16.   
  17.                 <!--[CDATA[  
  18.   
  19.                         import mx.controls.Alert;  
  20.   
  21.                         private function init():void  
  22.   
  23.                         {  
  24.   
  25.                                 Alert.show(this.parentApplication.test,"你",Alert.OK,this);  
  26.   
  27.                         }  
  28.   
  29.                 ]]-->  
  30.   
  31.         </fx:Script>  
  32.   
  33.         <s:Button x="60" y="48" label="按钮" click="init();"/>  
  34.   
  35. </mx:Module>  

 

出错信息:

  1. TypeError: Error #1009: 无法访问空对象引用的属性或方法。  
  2.   
  3.         at mx.managers::PopUpManagerImpl/http://www.adobe.com/2006/flex/mx/internal::createModalWindow()[E:/dev/4.x/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as:686]  
  4.   
  5.         at mx.managers::PopUpManagerImpl/addPopUp()[E:/dev/4.x/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as:401]  
  6.   
  7.         at mx.managers::PopUpManager$/addPopUp()[E:/dev/4.x/frameworks/projects/framework/src/mx/managers/PopUpManager.as:193]  
  8.   
  9.         at mx.controls::Alert$/show()[E:/dev/4.x/frameworks/projects/framework/src/mx/controls/Alert.as:618]  
  10.   
  11.         at com.pilihou.modules::Test/init()[E:/study/TryModule/src/com/pilihou/modules/Test.mxml:13]  
  12.   
  13.         at com.pilihou.modules::Test/___Test_Button1_click()[E:/study/TryModule/src/com/pilihou/modules/Test.mxml:17]  

 

 

 

错误修改方案:

Module

 

 

 

通常将模块载入一个子域,那么模块里面的类定义都不是application域的。比如第一个模块载入了类PopUpManager,那么整合Application中,它就成了PopUpManager的拥有者,因为像这种manager都是单例的,如果另外一个模块稍后要使用这个PopUpManager,就会引发运行时异常。

 

解决办法就是确保这些managers,比如PopUpManager and DragManager或者其他一些共享的服务 是在application中定义的,这样就能确保所有模块都能够使用。在main Application中:

 

 

 

 

Java代码 复制代码 收藏代码
  1. import mx.managers.PopUpManager;   
  2.   
  3. import mx.managers.DragManager;   
  4.   
  5. private var popUpManager:PopUpManager;   
  6. private var dragManager:DragManager;
posted on 2012-10-29 22:35  sagittar  阅读(126)  评论(0)    收藏  举报