删除子AS3

时间:2013-10-09 22:50:46

标签: actionscript-3 removechild

我正在尝试删除子动画片段,但它总是会出错。我已经尝试了不同的方式,没有任何作用。

这是我的打印屏幕。我要删除的Movieclip是movieclip playerPaddle中的movieclip1。

请帮助。

要移除的代码:

if(playerPaddle.movieclip1.hitTestObject(ball)){
                        playerPaddle.movieclip1.removeChild(movieclip1);

}

错误讯息: 对话框说解除全部或继续 - 不能将movieclip1 $转换为flash.display.DisplayObject

5 个答案:

答案 0 :(得分:1)

如果我理解正确,你试图从playerPaddle对象中删除movieclip1。

为此,您必须致电:

if(playerPaddle.movieclip1.hitTestObject(ball)){
                    playerPaddle.removeChild(playerPaddle.movieclip1);

}

这是因为playerPaddle是movieclip1的父对象,因此在父对象上调用removeChild将完美地工作。

答案 1 :(得分:1)

虽然Kuba的回答会提出您提供的代码的问题,但我认为您现在面临的问题是作为参数传递给movieclip1的{​​{1}}对象不是一个movieclip1。如果我不得不猜测,它很可能是空的。

你可以尝试:

playerPaddle.movieclip1.removeChild(...)

(我也提到了库巴的建议)。

答案 2 :(得分:0)

以下内容可以帮助您

if(this.parent) this.parent.removeChild(this);

您可以用适当的孩子替换this并获得相同的结果。像:

if(ball.parent) ball.parent.removeChild(ball);

答案 3 :(得分:0)

Kuba几乎是正确的,但movieclip1不在范围内。您仍然需要指向movieclip1,这是属于playerPaddle的对象。

if(playerPaddle.movieclip1.hitTestObject(ball))
{
    playerPaddle.removeChild(playerPaddle.movieclip1);
}

答案 4 :(得分:0)

如果您删除了孩子,您还需要删除正在侦听孩子的EventListener。如果删除子对象并且事件侦听器仍在检查它,则会出现错误。您可以将函数嵌套在这样的检查语句中

    if(playerPaddle)
    {
        if(playerPaddle.movieclip1.hitTestObject(ball))
        {
            playerPaddle.removeChild(playerPaddle.movieclip1);
        }
    }