AS3 - removeChild()从舞台中删除所有内容

时间:2011-03-25 13:23:40

标签: flash actionscript-3 actionscript flash-cs5

我正在为学校开发一款简单的Flash游戏。在一个级别中,多个敌人产生并且玩家应该射击它们。我使用removeChild()来摆脱被射击的敌人,但当我点击(击中)敌人时,我的舞台上的一切都被移除了;它完全是空白的。

用敌人填充我的舞台的功能如下:

    private function Game2():void{
    for (var i:uint=0; i<50; i++) {

        var man:MovieClip = new man_mc();
        man.x=Math.random()*750;
        man.y=Math.floor(Math.random()*(70))+350;
        addChild(man);
        man.addEventListener(MouseEvent.CLICK, getroffen);
    }

function'getroffen'检查敌人是否被击中:

public function getroffen(evt:MouseEvent):void{
            trace("hit");
            this.parent.removeChild(this);

}

这里有点混淆为什么它会删除舞台上的所有东西,而不是只删除我点击的敌人。有帮助吗?非常感谢。

2 个答案:

答案 0 :(得分:7)

取决于getroffen()的位置,您将删除该类(this指向当前范围对象),因此我猜它可能是Main类。

您需要执行类似删除功能的操作:

var man:MovieClip = evt.target as MovieClip;
man.parent.removeChild( man );

答案 1 :(得分:3)

而不是this.parent.removeChild(this)尝试:

evt.currentTarget.parent.removeChild(evt.currentTarget);

这应该可以做到!

事件(mouseEvent)是你的一个敌人的“孩子”,因此移除mouseEvent的目标会移除敌人。