我在数组中创建了一堆对象。我习惯于迭代地这样做,比如
for(i:int; i < number; i++){
ball= new Ball;
balls.push(ball);
}
然后我可以参考球[i]。然而,现在我用鼠标点击创建对象,而不是for循环,所以我没有那个[i],所以我的其他代码只引用了“ball”,这意味着它只会影响到任何一个创建。是否有任何合理的方法可以任意“命名”每个对象,以后我可以说“你们每个人都去做自己的事情而忽视其他人”?
答案 0 :(得分:0)
有几种解决方案,
如果你有球的参考,你可以使用
myArray.indexOf(myBall)
这会给你它在数组中的位置,所以你可以与它交谈。
您还可以使用如下名称值存储它们:
myArray["name" + uniqueIdentifier] = myBall;
这将取代你的推送声明。
或者你可以像这样循环遍历它们:
for(var i:int = 0; i < myArray.length; i++)
{
ball = myArray[i];
//perhaps you stored a value on ball to distinguish when it was created
if(ball.wasCreatedByMouseClick) // do something
}
希望能给你一些想法。
答案 1 :(得分:0)
我不知道你的代码是做什么的,但根据你所描述的,我会使用字典用字符串键存储你的对象。
字典类表现为一个对象,您可以在其中设置动态属性(键)及其值(您的对象)。 它与对象不同,因为键可以是任何东西(字符串,对象,数组,......任何东西)。
这是一个例子:
var d:Dictionary = new Dictionary (true);
d["myBall"] = new Ball();
function getBallByKey(key:String):Ball
{
return d[key];
}
取决于场景,好的方法是将字典引用设置为弱。这是为了避免内存泄漏(实际上让对象“死”没有其他引用,但字典本身指向该对象)