C'est la première fois que je pose une question ici.Flash AS3 bouton eventlistener tableau bug
J'ai un tableau de 12 boutons sur une timeline qui, lors de la première visite de cette partie de la timeline, obtient un événement CLICK eventlistener ajouté en utilisant une boucle for. Tous fonctionnent parfaitement à ce moment-là. Lorsque vous cliquez sur un, il lit une étiquette d'image à l'intérieur du clip movieClip spécifique et affiche une bio sur la personne correspondante avec un bouton de fermeture et supprime les CLICK eventlisters pour chaque bouton, en utilisant à nouveau une boucle for. Le bouton de fermeture joue une animation de fermeture, puis la ligne de temps revient à la première image (celle avec les 12 boutons) et les CLICK eventlisteners sont rajoutés, mais maintenant seuls les 9 premiers boutons du tableau fonctionnent. Il n'y a pas d'erreurs de sortie et le code pour rajouter les eventlisteners est exactement le même que la première fois que cela fonctionne. Je suis complètement perdu et je me demande si quelqu'un d'autre a rencontré ce problème. Tous mes boutons sont nommés correctement, il n'y a absolument aucune erreur de sortie (j'ai utilisé le module de débogage) et je me suis assuré que le tableau avec les boutons en sortie tous les 12 au moment où le bouton de fermeture est cliqué pour ajouter les eventlisteners.
for (var q = 0; q < ackBoDBtnArray.length; q++){
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[q]].addEventListener(MouseEvent.CLICK, showBio);
}
private function showBio(eo:MouseEvent):void {
trace("show the bio");
bodVar = ackBoDBtnArray.getIndex(eo.target.name);
contentArea_mc.acknowledgements_mc.BoD_mc.gotoAndPlay(ackBoDPgArray[bodVar]);
contentArea_mc.acknowledgements_mc.BoD_mc.closeBio_btn.addEventListener(MouseEvent.CLICK, hideBio);
for (var r = 0; r < ackBoDBtnArray.length; r++){
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[r]].mouseEnabled = false;
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[r]].removeEventListener(MouseEvent.CLICK, showBio);
}
}
private function hideBio(eo:MouseEvent):void {
trace("hide it!");
contentArea_mc.acknowledgements_mc.BoD_mc.closeBio_btn.removeEventListener(MouseEvent.CLICK, hideBio);
contentArea_mc.acknowledgements_mc.BoD_mc.gotoAndPlay(ackBoDClosePgArray[bodVar]);
for (var s = 0; s < ackBoDBtnArray.length; s++){
trace(ackBoDBtnArray[s]);
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[s]].mouseEnabled = true;
contentArea_mc.acknowledgements_mc.BoD_mc[ackBoDBtnArray[s]].addEventListener(MouseEvent.CLICK, showBio);
}
Merci d'avance pour toute aide que vous pouvez fournir et de perspicacité ... J'ai un léger sentiment que son quelque chose qui peut être évident pour une autre série d'yeux ... haha.
Pour les trois derniers, que voit-on dans la trace du débogage? – phwd
Pour quelle version flash exportez-vous? Si vous accédez à quelque chose sur un cadre, vous venez de gotoAndStop-ed .. il peut ne pas être accessible .. devrait faire une exception d'exécution si .. si vous stockez seulement des chaînes dans le tableau .. essayez de tracer des objets .. si certains d'entre eux non nul (encore une fois ... il devrait donner une exception d'exécution s'ils étaient .. mais rien d'autre ne me vient à l'esprit) – Antriel