我尝试将对象添加到 ArrayCollection 中的 ArrayCollection 中,但它不起作用。 我在以下实现中收到错误 #1009:
for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
identifyArrayCollection[x].speedsArrayCollection.addItem(speedsObj);
}
我可以将 speedsObj 添加到不在 ArrayCollection 中的 ArrayCollection 中。
任何帮助将不胜感激。
谢谢
马克
下面的代码将项speedObj
添加到在名为 identifyArrayCollection
的ArrayCollection
的索引 x
中找到的ArrayCollection
。
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
假设identifyArrayCollection 是一个包含一些对象和speedsArrayCollection 是一个 ArrayCollection,定义为包含在 identifyArrayCollection 中的对象类型的变量
你应该做:
for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
identifyArrayCollection.getItemAt(x).speedsArrayCollection.addItem(speedsObj);
}
不要忘记,任何复合对象都需要先初始化。例如(假设初始运行):
有两种方法可以做到这一点:捎带@Sam
for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
if (!identifyArrayCollection[x]) identifyArrayCollection[x] = new ArrayCollection();
identifyArrayCollection[x].addItem(speedsObj);
}
或者如果您真的想使用显式命名约定,请使用匿名对象 - 但请注意,这些不是编译时检查的(也没有使用数组访问器的任何内容):
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);
}