Probleme de double collsion AS3

Signaler
Messages postés
9
Date d'inscription
mercredi 15 octobre 2008
Statut
Membre
Dernière intervention
24 juin 2011
-
Messages postés
92
Date d'inscription
mercredi 11 octobre 2006
Statut
Membre
Dernière intervention
5 décembre 2010
-
bonjours, alors voila, je demande votre aide car j'ai créée une fonction qui supprime l'objet dans lequel l'objet point entre en collision, ce qui a pour effet de le supprimer et de faire un effet ricoché avec inversement de la vitesse, tout va quand jusqu'au moment ou point rencontre 2 objets a la fois ce qui annule l'effet de retours, il faudrait qu'il considère qu'il n'y a eu qu'une seul et même collision mais pas moyen d'y arrivé. je vous donne le morceau de script concerné merci d'avance.

function onshoot(e:Event):void {
if (bug_end  != true){
 	var child:DisplayObject  = e.currentTarget as MovieClip;
 	if(child.hitTestObject(point)) {
 	child.parent.removeChild(child);
 	vpy = vpy * -1;
removeEventListener(Event.ENTER_FRAME,onshoot);
}
}
}

1 réponse

Messages postés
92
Date d'inscription
mercredi 11 octobre 2006
Statut
Membre
Dernière intervention
5 décembre 2010

Il manque toute une partie de ton code pour pouvoir t'aider.
Est-on dans la classe principale ou celle d'un de tes objet testant une collision ?
Pourquoi l'enter frame est placé sur la racine de ton code ? C'est un jeu du type "l'utilisateur doit éviter quelque chose" ?
qui est "child" ?
qui est "point" ?

Je comprends pas pourquoi currentTarget est utilisé. on l'utilise la phase de capture ou de bouillonnement et plutôt pour un MouseEvent. e.currentTarget est l'objet sur lequel tu as placé ton écouteur. ici la classe dans laquelle tu te trouve. Donc e.currentTarget t'es accessible sans passer par les propriétés de l'évènement. Est tu sur de bien maitriser les tenants et aboutissants des propriétés que tu utilise et la notion de "scope" (étendue des variable et foncions) ?
Une source de bugs possible.

Enfin apparamment tu as placé un booléen qui se met à false lors d'une action... peut être dans ta fonction de retour mais à laquelle tu ne fais pas référence ici.

J'aurais fais comme cela pour éviter que la fonction ne soit déclenchée : un booléen dans la classe qui se place à false dès que ton bloc d'instruction à été effectué.

Steph