列出容器中的所有元素

时间:2011-07-11 15:15:34

标签: flex actionscript flex4

我想列出容器中的所有控件(按钮,数据网格等)

这有效,但会给我一个警告1008: variable 'comp' has no type declaration.

for (var i:int = 0;i<this.numElements;i++)
{
    var comp = this.getElementAt(i);
    trace(comp.id);
}

这就是我认为应该如何工作,但却给我一个编译错误1119: Access of possibly undefined property id through a reference with static type mx.core:IVisualElement.

for (var i:int = 0;i<this.numElements;i++)
{
    var comp:IVisualElement = this.getElementAt(i);
    trace(comp.id);
}

在我的脑海中,当我得到一个编译器警告它是因为我没有按照预期的方式做某事。

有没有其他方法可以引用id属性?我甚至以一种完全不同的方式遍历所有控件的方法?

3 个答案:

答案 0 :(得分:2)

将其键入UIComponent。组件将扩展此类。 (fl.controls组件和mx.core组件都扩展了UIComponent类)

答案 1 :(得分:2)

IVisualElement接口不会为'id'声明一个getter。假设您尝试检索的所有元素都是UIComponents,则必须转换为UIComponent。或者更好的是IAdvancedStyleClient,它是为UIComponent的'id'属性声明getter函数的接口。

var comp:IAdvancedStyleClient = getElementAt(i) as IAdvancedStyleClient;
if (comp) trace(comp.id);

我在这里测试comp是否不是null,以防位置'i'的组件实际上没有实现IAdvancedStyleClient。

答案 2 :(得分:0)

这不是获取元素的另一种方式吗?

for each(var comp:UIComponent in this)
trace(comp.id);