2009-08-07 4 views
0

나는이 코드를 가지고 있으며 예상대로 작동하지 않습니다. btnContainer는 수많은 버튼이 포함 된 VBox입니다 (toggle = true). 특정 시점에 토글되지 않도록 재설정하려고합니다. "BTN"위의 코드와 플렉스 3 : 일반 객체가 실제로 버튼인지 어떻게 알 수 있습니까?

for (var btn:Object in btnContainer.getChildren()){ 
    if (btn.isPrototypeOf(mx.controls.Button)){ 
     btn.selected = false; 
    } 
} 

은, 루프 (0, 1, 2, 3, ...)의 각 반복시처럼 인덱스를 표시하고 조건이 결코 참으로 평가합니다.

나는이 시도 :

for (var btn:Button in btnContainer.getChildren()){ 
    btn.selected = false; 
} 

이것은 또한 btnContainer 내부 레이블이 있다는 것을 제외하고는 잘 작동; 레이블을 버튼으로 형 변환하려고하면 오류가 발생합니다.

내가 뭘 잘못하고 있니?

답변

4

는 "for each..in"루프를 사용하고, 변수가 지정된 형식과 호환되는지 확인하려는 경우 (예를 들어, 특정 클래스의 인스턴스) is 연산자를 사용하십시오.

정확한 참조 번호는 an example입니다.

가 여기에 고정 코드입니다 : 내가 뇌 방귀를했고, 그것을 선택이라고 생각하기 때문에

for each (var btn:Object in btnContainer.getChildren()){ 
    if (btn is Button){ 
     btn.selected = false; 
    } 
} 
+0

아, 나는 "각"부분을 떨어졌다. 고마워, 고마워. –

+0

은 "each"가 없으면 뭔가 다른 것을 의미합니다. 이는 요소의 속성, 유형의 내부 검사 (때때로 유용 할 수 있음)를 반복합니다. –

2

is을 사용해 보셨습니까? 당신이 배열의 요소를 통해 루프를 원하는 경우

import mx.controls.Button; 

//... 
for (var key in btnContainer.getChildren()){ 
    var obj : Object = btnContainer[key]; 
    if (obj is Button){ 
     var button : Button = obj as Button; 
     button.selected = false; 
    } 
} 
관련 문제