Probleme de double collsion AS3

cs_milembar Messages postés 9 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 24 juin 2011 - 2 juin 2010 à 20:00
cs_ourso Messages postés 92 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 5 décembre 2010 - 6 juin 2010 à 15:09
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

cs_ourso Messages postés 92 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 5 décembre 2010
6 juin 2010 à 15:09
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
0
Rejoignez-nous