我有这个简单的代码删除了一个MovieClip,然后为该对象分配一个新的MovieClip。出于某种原因,它会重新添加新剪辑。如果我删除旧剪辑,则无法添加第二个剪辑。
public function addAnimation(clip:Class):void
{
_texture.parent.removeChild(_texture);
var effect:MovieClip = new clip();
texture.addChild(effect as MovieClip);
//sync up points
_texture.x = _body.GetPosition().x * Constants.PIXELS_TO_METRE;
_texture.y = _body.GetPosition().y * Constants.PIXELS_TO_METRE;
_texture = texture;
addChild(texture);
updateTexture();
}
我希望能够删除剪辑,然后为其分配一个新剪辑。我已经尝试了各种各样的变化和重新排序代码,分解到不同的功能等,但我已经达成了这一点。
答案 0 :(得分:0)
您的代码示例不明确:
_texture.parent.removeChild(_texture);
也许你的意思是:
private var _texture: MovieClip;
public function addAnimation(clip:Class):void
{
// remove previously added texture
if (_texture) {
removeChild(_texture);
}
// create new texture
_texture = new clip();
//sync up points
_texture.x = _body.GetPosition().x * Constants.PIXELS_TO_METRE;
_texture.y = _body.GetPosition().y * Constants.PIXELS_TO_METRE;
addChild(_texture);
updateTexture();
}
答案 1 :(得分:0)
据我了解您的代码示例,您正在向texture
添加新的子代,而不删除旧的子代。这应该可以解决问题。
var effect:MovieClip = new clip();
texture.removeChildren(0, texture.numChildren - 1);
texture.addChild(effect as MovieClip);