Salut à nouveau :) Clignotants autresComment donner des actions boutons créées dynamiquement pour chacun - partie 2
Ma première question en passe ici à Stackoverflow abordé cette question, j'avais un tableau qui a créé quelques boutons différents. Cependant, je ne savais pas comment leur attribuer des actions: How to give dynamically created buttons actions for each one - part 1
Grâce à Joel Hooks, j'ai pu faire fonctionner mon code. Cependant, cette fois-ci, au lieu d'utiliser un graphique importé en tant que Classe de ma bibliothèque, je crée plutôt un MovieClip en dessinant un dégradé * (pas besoin d'importer un fichier jpg) *. Maintenant, je reçois une autre erreur redoutée "pas compiler la constante de temps" erreur encore. Je crois que cela a quelque chose à voir avec la façon dont j'essaie de déterminer l'instance de bouton qui est cliquée ou rolledOver.
Le bouton Précédent création (travail) code:
for (var i: Number = 0; i < myXMLArray.length; i ++) { navButton = new NavButton; navButton.name = "button" + i; navButton.x = i * navSIZE; navButton.y = navBtnY; navButton.buttonMode = true; thumbsMov.addChild (navButton);
buttons.push (navButton); buttons [i] .addEventListener (MouseEvent.MOUSE_UP, handleButtonClick); buttons [i] .addEventListener (MouseEvent.ROLL_OVER, handleButtonOver); buttons [i] .addEventListener (MouseEvent.ROLL_OUT, handleButtonOff); }
L'auditeur précédent (travail) code:
function handleButtonOver(event:MouseEvent):void {
bouton var: NavButton = event.target comme NavButton; var id: Number = Number (button.name.split ("bouton") 1); si (bouton) TweenLite.to (buttonRolls [id], .4, {alpha: 1, facilité: Strong.easeOut}); cataText [id] .defaultTextFormat = a12Green; cataText [id] .text = monXMLArray [id] .id; }
code de création bouton actuel:
for (var i:Number = 0; i < num; i++) {
trace("loop number = "+i);
var blueGradient:MovieClip = new MovieClip();
blueGradient.name = "button" +i;
blueGradient.graphics.beginGradientFill(bGrad, bColors, bAlphas, bRatios ,bMatrix)
blueGradient.graphics.drawRect(0, 0, 266, 40);
blueGradient.x = i * navSIZE;
blueGradient.y = navBtnY;
blueGradient.buttonMode = true;
addChild(blueGradient);
buttons.push(blueGradient)
buttons[i].addEventListener(MouseEvent.MOUSE_UP, handleButtonClick);
buttons[i].addEventListener(MouseEvent.ROLL_OVER, handleButtonOver);
buttons[i].addEventListener(MouseEvent.ROLL_OUT, handleButtonOff);
}
bouton actuel Code auditeur:
function handleButtonOver(event:MouseEvent):void {
var button:blueGradient = event.target as blueGradient;
var id:Number = Number(blueGradient.name.split("button")[1]);
if(blueGradient)
cataText[id].defaultTextFormat = navFontRoll;
cataText[id].text = myArray[id].id;
}
Le film actuel ne fonctionne sans erreur si la ligne suivante est commenté:
var button:blueGradient = event.target as blueGradient;
Parce que c'est ce qui provoque l'erreur constante compilez pas le temps de venir. Toutefois, en supprimant cette ligne, tous les boutons sont des boutons button1 au lieu de 2 créés dynamiquement nommés button0 et button1.
Toute aide ou pointeur ici serait grandement appréciée! Merci d'avance pour avoir regardé mon code.
Je vous suggère de lire un peu à propos de la POO en Action Script - cela vous aidera beaucoup. Il y a des échantillons "prêts à partir" dans la documentation flash. Occupe-toi juste de "classe". – Konrad