AS3 - removeChild () удаляет все со сцены - PullRequest
1 голос
/ 25 марта 2011

Я работаю над простой 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);
    }

функция 'getroffen' проверяет, попал ли враг:

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

}

Здесь немного запутано, почему он удаляет все на сцене вместо того, чтобы удалять только врага, на которого я нажимаю.Любая помощь?Большое спасибо.

Ответы [ 2 ]

7 голосов
/ 25 марта 2011

в зависимости от того, где getroffen(), вы удаляете этот класс (this указывает на текущий объект области), поэтому я предполагаю, что это, вероятно, класс Main.

Вам нужносделать что-то вроде в вашей функции удаления:

var man:MovieClip = evt.target as MovieClip;
man.parent.removeChild( man );
3 голосов
/ 25 марта 2011

Вместо this.parent.removeChild(this) попробуйте:

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

Это должно сработать!

Событие (mouseEvent) является дочерним для одного из ваших врагов, поэтому удалениецель вашего mouseEvent удалит врага.

...