6

removeMovieClip()AS3中的等价物是什么?

显然很多人都有同样的问题:
StackOverflow:

  1. 如何在 as3 中完全删除影片剪辑
  2. 删除影片剪辑 as3
  3. 如何删除子影片剪辑并添加到新的父影片剪辑

其他:

  1. AS3 中的 removeMovieClip(this)?
  2. 销毁/删除影片剪辑???
  3. 删除影片剪辑

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

我正在使用AS3开发Flash CS4

我有一个非常简单的电影,只有一个名为click的按钮。按下按钮后,会创建一个新的coin实例:

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
}

它可能不是最好的代码,但可以正常工作。现在,硬币 MovieClip 应该显示一个小动画并自行移除。在好的旧 AS2 中,我会添加:

this.removeMovieClip()

在动画的最后一帧。但这在 AS3 中不存在。
我试过了,没有成功:

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'       

解决方案?

谢谢,

4

5 回答 5

12
this.parent.removeChild(this);

这个应该可以工作;这是我用的。我在切换到 AS3 时遇到的一个问题是,有时它不会被添加为子权限,因此您可能需要检查一下。如果您还没有,您还必须通过将它放在顶部来导入 flash.display:

import flash.display.*

您还应该在删除它之前删除它的事件侦听器。

于 2010-07-07T14:37:19.113 回答
0

如果您的动画在第 20 帧结束。

注意:使用 19 是因为闪存从零(0)开始计数帧,类似于数组索引。

class animatedCloud
{

    public function animatedCloud(){
        addFrameScript(19, frame20);
    }

    private function frame20(){
        parent.removeChild(this);
    }
}
于 2012-10-22T10:18:12.190 回答
0

始终确保那些自动删除的影片剪辑可以被垃圾收集。此解决方案从已加载的 swf 库符号中删除了我的所有实例:

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;
});
于 2013-04-20T12:14:00.027 回答
0
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;
}
于 2013-11-05T10:27:43.377 回答
-1

我在 MovieClip 末尾的一个额外的空白关键帧中使用它应该自行删除:

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

发现它是正确和最佳的解决方案。

于 2016-11-12T12:39:43.670 回答