Actionscript 3:当元素是 objects/class 个实例时,识别要删除的数组元素

Actionscript 3: Identifying an array element to delete when the elements are objects/class instances

我有一个对象数组,其中一些是影片剪辑,一些是 类 的实例。我需要从数组中删除一个项目,但正在为如何最好地确定要删除的数组索引而苦苦挣扎。

我目前正在使用此代码,它确实有效

                    var i:int;
                    for (i = 0; i < list.length; i++) {

                        if (list[i].toString() == '[object myClass]') {
                            trace('found', i);
                            list.removeAt(i);
                        }

                    }

我认为必须存在一种更好的方法来获取对象名称并且无需遍历数组。

我可以稍微说明一下您希望如何识别应删除的对象。如果您只想删除属于 myClass class 实例的任何对象,我建议使用 is 关键字。

此外,一个警告,在迭代列表时从列表中删除项目只是自找麻烦。如果您删除 index [0] 处的对象,那么以前位于 index [1] 处的对象现在是 index [0],但是您的 for 循环将在 i 的末尾递增 1每次迭代,所以你永远不会再次检查 index [0]。因此,您可以跳过一个或多个要删除的对象。

而是尝试迭代它 backwards-- 应该可以解决该问题。

以下是这两个建议的组合:

for (var i:int = (list.length - 1); i >= 0; i--)
{
    if (list[i] is myClass)
    {
        trace("found", i);
        list.removeAt(i);
    }
}