2010-02-03 3 views
0

J'ai déjà ajouté plusieurs boutons à la scène avec AS3 et je leur ai donné des noms d'instances uniques, mais maintenant j'ai un problème. Il n'y a aucune limite sur le nombre de boutons qui pourraient être présents, il pourrait y en avoir un ou cent donc je ne peux pas coder en dur.AS3: Ajouter plusieurs boutons pour mettre en scène avec eventlistener?

Comment créer des écouteurs d'événement pour chaque bouton? J'ai essayé de pousser chaque nom d'instance dans un tableau puis de boucler, mais cela m'a donné une erreur sur la façon dont les boutons n'existaient pas, donc il ne peut pas écouter.

Comment est-ce que je ferais ceci? Toute aide est très appréciée!

Répondre

3

Quelques exemples:

function init():void 
{ 
    var btn:Sprite; 
    for (var i:uint = 0; i < 100; i++) 
    { 
     btn = new Sprite(); 
     btn.graphics.beginFill(Math.round(Math.random() * 0xFFFFFF)); 
     btn.graphics.drawRect(0, 0, 50, 50); 
     btn.x = (i % 20) * 50; 
     btn.y = Math.floor(i/20) * 50; 

     // event listeners 
     btn.addEventListener(MouseEvent.CLICK, btnClick); 

     this.addChild(btn); 
    } 
} 

function btnClick (event:MouseEvent):void 
{ 
    var btn:Sprite = event.currentTarget as Sprite; 
    btn.graphics.clear(); 
    btn.graphics.beginFill(Math.round(Math.random() * 0xFFFFFF)); 
    btn.graphics.drawRect(0, 0, 50, 50); 
} 

De la même façon, vous pouvez ajouter une sous-classe de Sprite et par exemple garder un identifiant public supplémentaire ou tout avec elle. Ensuite, vous pouvez simplement regarder dans l'événement click sur lequel vous avez cliqué.

+0

Cela fonctionne magnifiquement, merci! J'ai résolu mon problème, j'essayais de vérifier les boutons via leur nom d'instance et de définir ce nom d'instance avec ".name", mais selon un article qui ne fonctionne pas dans AS3, je devrais plutôt utiliser un tableau, ce que j'ai fait ! J'ai mis à jour mon code pour refléter certains des vôtres, très apprécié, vous me pointez dans la bonne direction! (article en question: http://www.calypso88.com/?p=302) – sam

+0

Oui, dans les objets AS3 mis à la scène avec un nom d'instance sont plus comme des variables prédéfinies, vous pouvez accéder. Heureux d'avoir pu aider :) – poke

Questions connexes