2013-08-23 43 views
0

有一组对象。我正在尝试removeChild下面的数组中的一个对象。 removeChild工作正常,但删除最高的对象后,阵列不会自行刷新。正如你可以在下面看到的,我试图trace阵列项目。removeChild后阵列不会自行刷新

首先,阵列有三个项目,显然myArray.length必须是3. 删除小孩后,myArray.length必须是2,但它会得到3(错误)。

removeChild(myArray[currShape]); 
trace(myArray); 

请告诉我什么我在这里失踪。

+0

这是先进的东西,但我会说无论如何。即使用'splice'从数组中删除元素,对象仍然是“活着的”。这是因为实际上AS3中的所有对象都只是指向存储在内存中的真实对象的指针。 AS3中的变量只是您实际上从未实际交互的真实对象的参考。这就是为什么即使你从数组中移除对象,它仍然会被显示在显示列表中。 – Pier

回答

2

假设您使用的是ActionScript,removeChild()仅用于从舞台上取下对象。它不会从数组中取出东西。您必须在另一个语句中手动将对象从阵列中移出。

+0

谢谢,请告诉我如何将对象与另一个声明取出来? –

+0

Here you go:http://stackoverflow.com/questions/10089806/as3-array-remove-by-index – shieldgenerator7

+0

首先arg是开始拼接的索引,其次是拼接出多少项目 – shieldgenerator7

1

你可以尝试这样的:

removeChild(myArray.splice(currShape,1)); 

这将删除阵列的条目,并返回将用于从舞台上删除该条目。

+0

这实际上不起作用,因为splice返回一个包含对象拼接的数组,而不是DisplayObject。你需要添加一个流行音乐来完成这项工作。即'removeChild(myArray.splice(currShape,1).pop());' – prototypical