列出容器中的所有元素

发布于 2024-11-19 08:43:36 字数 558 浏览 6 评论 0原文

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

这可以工作,但会给我一个警告1008:变量'comp'没有类型声明。

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

这就是我认为它应该工作的方式,但是给我一个编译器错误1119:通过静态类型mx.core:IVisualElement的引用访问可能未定义的属性id。

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

在我看来,当我收到编译器警告时,这是因为我没有做某事道路应该是这样。

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

I want to list all controls (buttons, datagrids, etc) in a container

This works but gives me a warning 1008: variable 'comp' has no type declaration.

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

This is how I thought it should work but gives me a compiler error 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);
}

In my head, when I get a compiler warning it's because I'm not doing something the way it is supposed to be.

Are there any alternatives to reference the id property? A method I'm missing even a whole different way iterate through all the controls?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

楠木可依 2024-11-26 08:43:36

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

Type it as a UIComponent. Components will extend this class. (fl.controls components and mx.core components both extend a UIComponent class)

等风来 2024-11-26 08:43:36

IVisualElement 接口没有声明“id”的 getter。假设您尝试检索的所有元素都是 UIComponent,您必须将其转换为 UIComponent。或者更好的是 IAdvancedStyleClient,它是为 UIComponent 的“id”属性声明 getter 函数的接口。

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

我在这里测试 comp 是否不 null,以防万一位置“i”的组件实际上未实现 IAdvancedStyleClient。

The IVisualElement interface does not declare a getter for 'id'. Assuming that all elements you are trying to retrieve are UIComponents you'll have to cast to UIComponent. Or better yet to IAdvancedStyleClient, which is the interface that declares the getter function for the 'id' property of UIComponent.

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

I test whether comp is not null here, just in case the component at position 'i' would in fact not implement IAdvancedStyleClient.

久随 2024-11-26 08:43:36

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

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

Wouldn't this be another way of getting your elements?

for each(var comp:UIComponent in this)
trace(comp.id);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文