我正在尝试删除子动画片段,但它总是会出错。我已经尝试了不同的方式,没有任何作用。
这是我的打印屏幕。我要删除的Movieclip是movieclip playerPaddle中的movieclip1。
请帮助。
要移除的代码:
if(playerPaddle.movieclip1.hitTestObject(ball)){
playerPaddle.movieclip1.removeChild(movieclip1);
}
错误讯息: 对话框说解除全部或继续 - 不能将movieclip1 $转换为flash.display.DisplayObject
答案 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);
}
}