我想列出容器中的所有控件(按钮,数据网格等)
这有效,但会给我一个警告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属性?我甚至以一种完全不同的方式遍历所有控件的方法?
答案 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);