1

我正在尝试删除一个子影片剪辑,但它总是出错。我已经尝试了不同的方法,但没有任何效果。

这是我的打印屏幕。我要删除的影片剪辑是影片剪辑播放器Paddle 内的影片剪辑1。

请提供任何帮助。

我要删除的代码:

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

}

错误消息:显示全部关闭或继续的对话框 - 无法将 movieclip1$ 转换为 flash.display.DisplayObject

4

5 回答 5

2

如果我理解正确,您正在尝试从 playerPaddle 对象中删除movieclip1。

为此,您必须致电:

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

}

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

于 2013-10-10T00:30:29.953 回答
1

虽然 Kuba 的回答对您提供的代码提出了问题,但我认为您现在面临的问题movieclip1是作为参数传递给playerPaddle.movieclip1.removeChild(...)的对象不是影片剪辑1。如果我不得不冒险猜测,它很可能是空的。

你能试一下吗:

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

(我也包含了 Kuba 的建议)。

于 2013-10-10T01:39:49.600 回答
0

以下内容可能对您有所帮助

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

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

if(ball.parent) ball.parent.removeChild(ball);
于 2013-10-10T11:31:49.000 回答
0

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

    if(playerPaddle)
    {
        if(playerPaddle.movieclip1.hitTestObject(ball))
        {
            playerPaddle.removeChild(playerPaddle.movieclip1);
        }
    }
于 2014-01-27T16:05:20.563 回答
0

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

if(playerPaddle.movieclip1.hitTestObject(ball))
{
    playerPaddle.removeChild(playerPaddle.movieclip1);
}
于 2013-10-10T15:23:11.057 回答