目前,我正在进行从Flex 3到4的代码迁移,并在弹出窗口的初始化功能中设置currentState。
代码是这样的,
currentState = "xyz";
// Now I try to access child which I am adding in "xyz" state definition.
var childIndex:int = form.getChildIndex(childId); // this throws error 2025
状态定义
<mx:State name="xyz">
<!-- I remove some children and add some children before this -->
<mx:AddChild relativeTo="{form}" position="lastChild"
creationPolicy="all">
<mx:FormItem id="childId"
label="Frequency">
<mx:ComboBox id="cmbId"
dataProvider="{dataP}"
selectedIndex="0"
change="function()"/> </mx:FormItem>
</mx:AddChild>
这段代码一直运行良好,直到我开始用flex 4.5sdk编译代码。从那以后,它给我带来了错误#2025。
有指针吗?
在调用form.childIndex(childId)
之前,您需要弄清楚.parent
对于childId
是什么。#2025错误应该告诉您,在您调用form.getChildIndex(childId)
时,childId的父级不是form
尝试在getChildIndex调用之前添加trace("parent of childId " + childId.parent)
:
trace("parent of childId " + childId.parent);
form.childIndex(childId);
或者,再次更新您的答案,并包含form
的MXML,该MXML显示childId是直系后裔?
当我尝试在creationComplete方法中获取childId的ChileIndex时,它运行得很好。似乎在初始化阶段,我们试图访问状态的子索引,因此我们得到了错误,因为该子索引可能没有在状态中布局。