2010-08-04 3 views
1

En AS3, j'ajoute écouteur d'événement, puis attacher la fonction anonyme à elle:inf actionscript 3 (as3), comment passer paramètre dans la fonction anonyme?

myBox.addEventListener (fonction MouseEvent.ROLL_OVER, (e: MouseEvent): void { Alert.show (comte, Boîte d'alerte »); );

Maintenant, cette partie du code est bouclée n fois. Maintenant, j'ai n myBoxes et chaque fois que je passe ma souris sur la boîte, il devrait alerter le nom. Mais, ce que je vois, c'est que la dernière valeur de count est utilisée par chaque case.

Comment puis-je transmettre un paramètre ou une valeur à la fonction anonyme? (Comme rouler, je crois, ne prévoit qu'une seule variable)

Répondre

5

Vous devez créer un nouveau champ en exécutant une fonction:

for (var i:int = 0; i<10; i++) 
{ 
    (function(count:int):void 
    { 
     myBox.addEventListener(MouseEvent.ROLL_OVER, 
      function(e:MouseEvent):void { Alert.show(count, 'Alert Box'); }); 
    })(i); 
} 
1

Plutôt que de compter sur un indice, ne serait-il plus simple (et mieux) pour obtenir le currentTarget de l'événement et obtenir la valeur de l'un de ses membres?

myBox.addEventListener(MouseEvent.ROLL_OVER, 
function(e:MouseEvent):void 
{ 
    Alert.show(UIComponent(e.currentTarget).name, 'Alert Box'); 
); 

Si vous devez absolument faire référence à l'index, vous pouvez obtenir que par

UIComponent(e.currentTarget).parent.getChildIndex(e.currentTarget) 

Et, maintenant que je pense, vous ne disposez même pas d'en faire une fonction anonyme à Tout si vous utilisez le modèle d'événement.

+0

oui, c'est bon !!! :) – svirk

Questions connexes