Список всех элементов в контейнере - PullRequest
0 голосов
/ 11 июля 2011

Я хочу перечислить все элементы управления (кнопки, сетки данных и т. Д.) В контейнере

Это работает, но выдает мне предупреждение 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 ]

2 голосов
/ 11 июля 2011

Интерфейс IVisualElement не объявляет получатель для 'id'.Предполагая, что все элементы, которые вы пытаетесь получить, являются компонентами UIComponent, вам придется преобразовать их в UIComponent.Или еще лучше для IAdvancedStyleClient, который является интерфейсом, который объявляет функцию получения для свойства 'id' UIComponent.

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

Я проверяю, является ли comp здесь null, на всякий случайКомпонент в позиции 'i' фактически не реализует IAdvancedStyleClient.

2 голосов
/ 11 июля 2011

Введите его как UIComponent. Компоненты расширят этот класс. (компоненты fl.controls и компоненты mx.core расширяют класс UIComponent)

0 голосов
/ 12 июля 2011

Не будет ли это еще одним способом получить ваши элементы?

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