ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级

时间:2012-11-27 13:12:09

标签: actionscript-3 flash

我在as3.0中创建了一个小游戏。我在游戏中产生了很多墙壁,试图粉碎你(玩家)。

我正在尝试从阵列和屏幕上删除您附近的所有墙壁。我第一次按下它按钮就可以删除250px范围内的所有墙壁。但是第二次按下按钮会出现以下错误:

  

ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级。

我认为这是因为尝试删除已被删除的子项。我试图用以下代码检查孩子是否存在,但它似乎不起作用。

if (wallArray[i] != null && contains(wall)) {
    if (wallArray[i].x < 250 + wp_reach){   
        //haalt de muur weg
        //TODO : KIJK OF HET KIND IS

            removeChild(wallArray[i]); 
         }

    }

以下是按下按钮的完整代码:

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

action.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

function fl_TapHandler(event:TouchEvent):void
{
    for (var i:Number=0;i<wallArray.length;i++){
        if (wallArray[i] != null && contains(wall)) {
            if (wallArray[i].x < 250 + wp_reach){   
                removeChild(wallArray[i]); 
            }

        }
        else{
            trace ("There is no wall in range yet");
        }
    }   
}

1 个答案:

答案 0 :(得分:1)

始终测试查询中的项目是否是要从中删除容器的子项,如下所示:

if(wallArray[i] && contains(wallArray[i]))
{
    removeChild(wallArray[i]);
}

最好的问候