Je travaille sur un jeu Flash simple pour l'école. Dans un niveau, plusieurs ennemis apparaissent et le joueur est censé les abattre. J'ai utilisé removeChild() pour me débarrasser de l'ennemi qui a été abattu, mais quand je clique sur un ennemi, tout sur ma scène est enlevé; ça devient complètement vide.AS3 - removeChild() supprime tout de la scène
La fonction pour remplir ma scène avec des ennemis est le suivant:
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);
}
fonction des contrôles « getroffen » si un ennemi a été touché:
public function getroffen(evt:MouseEvent):void{
trace("hit");
this.parent.removeChild(this);
}
sorte de confusion ici pourquoi il supprime tout sur la scène au lieu d'enlever seulement l'ennemi sur lequel je clique. De l'aide? Merci beaucoup.
Merci. Cela fonctionne bien. Pourriez-vous expliquer quelle est la différence avec le code fourni par Tim S.? Je comprends mieux son code que le vôtre, mais ils semblent tous deux faire l'affaire. – cabaret
Ils sont tous les deux fonctionnellement équivalents. La seule différence est qu'il utilise le paramètre 'currentTarget' (probablement meilleur) au lieu du paramètre' target'. La différence se résume à la façon dont le modèle d'événement fonctionne et à qui vous enregistrez l'écouteur d'événement. Tout ce que je fais est de lancer la cible à un 'MovieClip' (vous pouvez ajouter une vérification pour voir si elle est nulle, puis retourner si vous voulez), puis en appelant c'est' parent' pour le supprimer. Lorsque vous ajoutez un objet 'DisplayObject' à un autre, il devient un enfant de cet objet et a son ensemble de paramètres' parent'. Donc faire 'obj.parent.removeChild (obj)' est un moyen facile de l'enlever – divillysausages
Comme pour la différence 'target' et' currentTarget', le modèle 'Event' en flash a 3 étapes: la phase de capture, la phase événementielle et la phase de bullage. Lorsqu'un objet de la liste d'affichage distribue un événement, il passe 'Stage-> parent-> parent-> parent-> child' où' child' est l'objet qui a envoyé l'événement et 'parent' est chaque parent' DisplayObject' jusqu'à la «scène». Jusqu'au dernier parent, nous sommes en phase de capture. Quand nous atteignons l '«enfant», nous sommes dans la phase de l'événement. Après cela, l'événement revient à la 'Stage'. Donc, en termes de 'target' et' currentTarget', 'target' est l'objet qui a envoyé l'événement, alors que' currentTarget' est l'objet courant dans le 'Stage-> parent-> parent-> Ceci est la phase bouillonnante – divillysausages