我已经彻底搜索过,但没有找到这个问题的答案。也许我的问题是错误的。我的 tabNavigator 的每个 Canvas 子项上共有 30 个子项。该代码适用于对子项进行计数和迭代,但是当我尝试将项目添加到我的 ArrayCollection 时,一切都崩溃了。这是代码:
private function addrNewDB():void {
var q:int = 0;
var t:int = tabNavigator.numChildren;
while (q<t){
var TNG:Array = tabNavigator.getChildren();
var qnn:Array = TNG[q].getChildren() as Array;
var gat:int = 0;
var pat:int = TNG[q].numChildren;
var newItem:Object = new Object();
while (gat<pat){
if (UIComponent(qunn[gat]) is CheckBox){
if (qunn[gat].selected == true){
var game:String = "Y";
}
else {
gm = "N";
}
Alert.show("gat: "+String(gat)+" | pat: "+String(pat)+"\n"+qnn[gat].id+" - "+qnn[gat].label+": "+gm);
}
gat++;
}
q++;
}
}
这里发生的是,我有在运行时通过按钮动态添加的选项卡。每个选项卡都有一个画布,上面是文本框、标签、复选框和组合框。共有30个项目;其中七个是复选框。
我已经设置此代码来遍历我的 tabNavigator 中每个 Tab(t) 的每个 Canvas 子 (pat) 的每个子 (组件),确定该组件是否是 CheckBox,查看它是否被选中,然后提醒我每个画布上只有 7 个复选框。
所有这些都运作良好。当我尝试将新项目添加到 HardwareItems ArrayCollection 时,我遇到了障碍。
我认为我只是没有得到正确的语法。当我尝试在警报之后立即放置一些代码以将新项目添加到 HardwareItems 时,它会在第一个 CheckBox 之后停止向我发出警报,所以我假设它遇到了我一直在编码的方式的某种问题它。
我想要的是为 7 个复选框中的每一个正确添加一个新项目到 HardwareItems 数组集合中的一些帮助。
我试过这个:
HardwareItems.addItem({merch: lblMerchID.text,
item: qnn(gat).label,
manf: "",
have: gm,
requ: "",
qual: "",
location: "",
id: qnn(gat).id});
和这个:
newItem['merch'] = lblMerchID.text;
newItem['item'] = qnn(gat).label;
newItem['qual' = "";
newItem['loc'] = "";
newItem['id'] = qnn(gat).id;
HardwareItems.addItem(newItem);
HardwareItems.refresh();
这也是:
newItem.merch = lblMerchID.text;
newItem.item = qnn(gat).label;
newItem.qual = "";
newItem.loc = "";
newItem.id = qnn(gat).id;
HardwareItems.addItem(newItem);
HardwareItems.refresh();
很明显,这些都是不正确的方式来完成我想要的,但我只是在尝试任何事情。顺便说一句,这些编码暴行都没有引发任何错误。但是,当我尝试它们时,我得到了一个警报……第一个 CheckBox 位于 30 个项目中的 23 个。
我已经阅读了有关 ArrayCollection 和 Array 语法的所有文档,但我想我只是不明白。任何帮助表示赞赏。谢谢你。