【原】TypeError: Error #1009 错误原因以及如何处理
(2011-08-03 12:28:53)
标签:
typeerrorerror1009layoutchromepopupmanagercenterpopupflexit |
分类: Flex/Flash |
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
atmx.containers::Panel/layoutChrome()
atmx.core::Container/updateDisplayList()
atmx.containers::Panel/updateDisplayList()
atmx.core::UIComponent/validateDisplayList()
atmx.core::Container/validateDisplayList()
atmx.managers::LayoutManager/validateClient()
atmx.core::UIComponent/validateNow()
atmx.managers::PopUpManagerImpl/centerPopUp()
atmx.managers::PopUpManager$/centerPopUp()
atsalaryEdit/showHeadEdit()[D:\javatools\workspaces\cn.tsoft.drp.salary.client.flex\flex\salaryEdit.mxml:30]
atHeaderRenderer/onClick()[D:\javatools\workspaces\cn.tsoft.drp.salary.client.flex\flex\HeaderRenderer.mxml:7]
atHeaderRenderer/___HeaderRenderer_Canvas1_click()[D:\javatools\workspaces\cn.tsoft.drp.salary.client.flex\flex\HeaderRenderer.mxml:2]
at
at
at
at
at
at
at
at
at
at
at
at
在弹出框的时候,调用PopUpManager.centerPopUp(ui)这个方法的时候会报上面的错。
报出上面错误的页面上会出现两种情况:
第一种:弹出框在弹出的时候有很卡的感觉,并且页面上会出现透明加边框的样子
第二种:弹出框根本弹出出来,页面会出现弹出框的边框卡屏现象,并且只有边框里面全部是透明的。
这个错误是因为调用居中的时候会重新布局,导致内部处理这个layoutChrome()方法的时候出错。
是因为弹出的控件在application中找不到对应的实力。
我们在开发的时候经常会分很多工程来做,但是application只会有一个,所以别的都是用model的方式加载进来的。就是因为这种情况,弹出的组建可能没有跟application在同一个工程导致,弹出的时候错上面的错误。
解决的方法就是,将需要弹出的组建可以抽取到一个swc工程中,在application工程中引用这个swc,别的工程的model中也引用application所在工程中的libs/*.swc来操作,这样就可以解决上面的问题。