2012-04-18 3 views
0

Я попытался добавить объект в ArrayCollection внутри ArrayCollection, и он не работает. Я получаю Error # 1009 со следующей реализацией:Можете ли вы добавить объект в arraycollection внутри arraycollection?

for (var x:Number = 0; x < identifyArrayCollection.length; x++) 
{ 
    identifyArrayCollection[x].speedsArrayCollection.addItem(speedsObj); 
} 

Я могу добавить speedsObj к ArrayCollection, который не внутри ArrayCollection.

Любая помощь будет оценена по достоинству.

Спасибо,

Марк

ответ

0

Следующий код добавляет элемент speedObj к ArrayCollection по индексу x в ArrayCollection называется identifyArrayCollection.

identifyArrayCollection.getItemAt(x).addItem(speedsObj); 

Это вы что искали?


код у вас есть выполняет следующие действия:

identifyArrayCollection[x] 
//accesses the item stored in identifyArrayCollection 
//with the key of the current value of x 
//NOT the item stored at index x 

.speedsArrayCollection 
//accesses the speedsArrayCollection field of the object 
//returned from identifyArrayCollection[x] 

.addItem(speedsObj) 
//this part is "right", add the item speedsObj to the 
//ArrayCollection 
0

Предполагая, что identifyArrayCollection является ArrayCollection, содержащий некоторые объекты и speedsArrayCollection является ArrayCollection определяется как переменную типа Object, которые содержатся в identArrayCollection

Вы должны сделать:

for (var x:Number = 0; x < identifyArrayCollection.length; x++) 
{ 
    identifyArrayCollection.getItemAt(x).speedsArrayCollection.addItem(speedsObj); 
} 
0

Не забывайте, что любой составной объект должен быть сначала инициализирован. Например (предполагается, что первоначальный запуск):

есть два способа сделать это: поросенок-поддержку

@ Сэм
for (var x:Number = 0; x < identifyArrayCollection.length; x++) 
{ 
    if (!identifyArrayCollection[x]) identifyArrayCollection[x] = new ArrayCollection(); 
    identifyArrayCollection[x].addItem(speedsObj); 
} 

или используя анонимный объект, если вы действительно хотите использовать явные соглашения о присвоении имен - однако имейте в виду, что это NOT время компиляции (и ничего не используется при использовании аксессуаров):

for (var x:Number = 0; x < identifyArrayCollection.length; x++) 
{ 
    if (!identifyArrayCollection[x]) 
    { 
     var o:Object = {}; 
      o.speedsArrayCollection = new ArrayCollection(); 
     identifyArrayCollection[x] = o; 
    } 
    identifyArrayCollection[x].speedsArrayCollection.addItem(speedsObj); 
}