在Flash AS3中删除MovieClip并替换为另一个?

时间:2015-04-20 04:14:31

标签: actionscript-3 textures movieclip

我有这个简单的代码删除了一个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();

        }

我希望能够删除剪辑,然后为其分配一个新剪辑。我已经尝试了各种各样的变化和重新排序代码,分解到不同的功能等,但我已经达成了这一点。

2 个答案:

答案 0 :(得分:0)

您的代码示例不明确:

  1. 变量_texture是什么,纹理是什么。
  2. 您无法从自身_texture.parent.removeChild(_texture);
  3. 中删除动画片段

    也许你的意思是:

    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);