Flex 3:如何确定通用对象是否实际上是一个按钮?

时间:2009-08-07 20:37:04

标签: flex actionscript-3

我有这些代码,并没有像我预期的那样工作。 btnContainer是一个包含大量按钮的VBox(toggle = true);我希望在某个时刻将它们重置为未切换。

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

使用上面的代码,“btn”在循环的每次迭代(0,1,2,3,...)中只显示索引,条件永远不会计算为true。

我也试过这个:

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

这很好,除了btnContainer中还有一个标签;因此在尝试将标签转换为按钮时会抛出错误。

我做错了什么,这里?

2 个答案:

答案 0 :(得分:4)

如果要循环遍历数组的元素,请使用“for each..in”循环,如果要查看变量是否与给定类型兼容(例如,给定类的实例) ,使用is运算符。

对于这种确切的案例,语言参考有an example

这是固定代码:

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

答案 1 :(得分: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;
    }
}