代码之家  ›  专栏  ›  技术社区  ›  Skuge

如何在AS3中使MovieClip自动移除?

  •  5
  • Skuge  · 技术社区  · 15 年前

    removeMovieClip()

    显然很多人都有同样的问题:
    堆栈溢出:

    1. How to completely remove a movieclip in as3
    2. Remove movie clip as3
    3. How to remove childmovieclip and add to new parent movieclip

    其他:

    1. removeMovieClip(this) in AS3?
    2. Destroy/Delete a Movieclip???
    3. Remove movie clip

    但他们的解决方案似乎都不管用,对我来说:

    我正在工作 具有 AS3公司

    我有一部很简单的电影,只有一个按钮叫做 . 按下按钮,一个新的 硬币 创建时间:

    this.click.addEventListener(MouseEvent.CLICK,justclick);
    function justclick(e:MouseEvent){
        var money=new coin
        this.addChild(money)
        money.x=e.stageX
        money.y=e.stageY
    }
    

    this.removeMovieClip()
    


    我尝试过,但没有成功:

    this.parent.removeChild(this) // 'Cannot access a property or method of nullobject reference'...     
    
    this.removeMovieClip() // 'removeMovieClip is not a function'      
    
    removeMovieClip(this) //'call to possibly undefined method removeMovieClip'       
    
    unloadMovie(this)//'call to possibly undefined method removeMovieClip'       
    

    解决?

    谢谢,

    5 回复  |  直到 8 年前
        1
  •  12
  •   Ullallulloo    15 年前
    this.parent.removeChild(this);
    

    这个应该有用;我用的就是这个。我切换到AS3时遇到的一个问题是,有时它不会作为一个孩子添加,所以您可能需要检查一下。如果您还没有:

    import flash.display.*
    

    在删除事件侦听器之前,还应该先删除它。

        2
  •  0
  •   justnajm    12 年前

    如果动画在第20帧结束。

    class animatedCloud
    {
    
        public function animatedCloud(){
            addFrameScript(19, frame20);
        }
    
        private function frame20(){
            parent.removeChild(this);
        }
    }
    
        3
  •  0
  •   layouterlimits    12 年前

    总是要确保那些自动移除的movieclips可以被垃圾收集起来。

    var mc:MovieClip = new definition() as MovieClip;
    addChild(mc);
    
    mc.x = 1000 * Math.random();
    mc.y = 1000 * Math.random();
    
    mc.addFrameScript(mc.totalFrames - 1, function onLastFrame():void
    {
        mc.stop();
        mc.parent.removeChild(mc);
        mc = null;
    });
    
        4
  •  0
  •   Le Bachi    11 年前
    public static function removeDisplayObject(displayObject:DisplayObject):void {
        /* normal code
        if(displayObject && displayObject.parent){
            displayObject.parent.removeChild(displayObject);
        }
         */
        displayObject ? displayObject.parent ? displayObject.parent.removeChild(displayObject) : null : null;
    }
    
        5
  •  -1
  •   Avi    8 年前

    stop();
    MovieClip(parent).removeChild(this);
    

    我发现这是最好的解决方案。

    推荐文章