最近在做flex程序时,遇到了以下错误
Error #1010: A term is undefined and has no properties.
我的代码(以下代码进行了简化)
<mx:WindowedApplication initialize="init();">
public function init():void{
//mb_mainmenu是我定义的一个菜单工具栏,有四个一级菜单,我希望在初始化函数中,把第二个一级菜单设置为false
mb_mainmenu.menuBarItems[1].enabled = false;
}
</mx:WindowedApplication>
编译没有问题,但是运行时提示错误:
Error #1010: A term is undefined and has no properties.
错误的提示已经很明白,就是没有或者没有定义的属性,但是为什么编译时不提示哪?
经过分析,找到产生错误的原因,是在init函数中调用了mb_mainmenu.menuBarItems[1].enabled属性的设置。经过自己的分析我认为是在init时,mb_mainmenu还没有初始化完成,所以调用mb_mainmenu.menuBarItems[1].enabled时,才会提示以上的错误。我增加一个按钮,在按钮的click中调用mb_mainmenu.menuBarItems[1].enabled此属性的设置就没有这个错误。说明我的假设是正确的。
再debug模式下逐步调试的结果也验证了我的假设