我在Flex中使用组合框面临一个奇怪的问题。在以下代码中:
public function rollCombo(cmb:ComboBox,value:String):void
{
if(value=='') return;
var i:int=0;
cmb.selectedIndex = 0;
var dp1:XMLListCollection = (XMLListCollection(cmb.dataProvider);
trace(value);
while(dp1[i]!=value && i<dp1.length)
cmb.selectedIndex = ++i;
cmb.validateNow();
cmb.validateDisplayList();
trace(cmb.selectedLabel);
}
在示例中,在函数执行结束时,i为7,并且 cmb.selectedLabel是“xyz”(根据跟踪输出),但显示标签 在组合框中是不同的。
此外,这是不可预测的。它有时会发生,而不是总是发生。
答案 0 :(得分:2)
最后的selectedIndex超出范围,因为您使用了预增量。这意味着我在测试之前变成dp1.length,并且它也被分配给selectedIndex。这可能解释了奇怪的行为。你可能想要使用后增量。
另外。在那段时间内执行的唯一事情就是
cmb.selectedIndex = ++i;
我不知道这是不是你想要的,但你可能需要一些“{}”。