Apache flex Flex3:如何确定泛型对象是否实际上是按钮?

Apache flex Flex3:如何确定泛型对象是否实际上是按钮?,apache-flex,actionscript-3,Apache 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,…)中仅

我有这段代码,但它没有像我预期的那样工作。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;
}
这很好,除了BTN容器内还有一个标签;因此,当试图将标签转换为按钮时,它会抛出一个错误


我做错了什么,这里?

您是否尝试过使用
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;
    }
}

您是否尝试过使用
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;
    }
}

如果要在数组元素之间循环,请在循环中为每个..使用“
”,如果要查看变量是否与给定类型(例如给定类的实例)兼容,请使用
is
运算符

这种情况下,语言的参考是不正确的

以下是固定代码:

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

如果要在数组元素之间循环,请在
循环中为每个..使用“
”,如果要查看变量是否与给定类型(例如给定类的实例)兼容,请使用
is
运算符

这种情况下,语言的参考是不正确的

以下是固定代码:

for each (var btn:Object in btnContainer.getChildren()){
    if (btn is Button){
        btn.selected = false;
    }
}   
啊,我放弃了“每个”部分,因为我有一个大脑放屁,并认为它是可选的。有道理,谢谢。如果没有“each”,它意味着一些不同的东西:它将迭代元素的属性,一种类型内省(有时可能有用)。啊,我放弃了“each”部分,因为我有一个大脑屁,认为它是可选的。有意义,谢谢。如果没有“each”,它的意思就不同了:它将迭代元素的属性,这是一种类型内省(有时可能有用)。