2009-06-23 7 views
1

플렉스의 콤보 박스에 이상한 문제가 있습니다. 다음 코드 : 예 케이스플렉스 콤보 박스 이상한 문제

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); 
    } 

함수의 실행 종료시 저는 7 및 cmb.selectedLabel는 "XYZ"이다 (추적 출력에 따라), 그러나 콤보 상자에 표시되는 라벨은 다른 라벨입니다.

또한 예측할 수 없습니다. 때로는 항상 그런 것은 아닙니다.

답변

2

사전 증가를 사용하므로 마지막 selectedIndex가 범위를 벗어납니다. 즉, 테스트 전 dp1.length가되며 selectedIndex에도 할당된다는 의미입니다. 이상한 행동을 설명 할 수 있습니다. 아마 후 증가를 사용하고 싶을 것이다.

또한. 그 동안 실행됩니다있는 유일한 방법은 당신이 원하는 거라면 나도 몰라

cmb.selectedIndex = ++i; 

것으로 보이지만, 일부 "{}"이해야 할 수도 있습니다.