Comment ajouter des écouteurs d'événement à un tableau d'objets
J'ai un tableau d'objets (plus précisément easelJS
images) - quelque chose comme cela:
var imageArray = new Array;
gShape = new createjs.Shape();
//shape is something
imageArray.push(gShape);
Ce que je veux faire est d'avoir un écouteur d'événement au lieu de:
gShape.addEventListener("click", function() {alert"stuff"});
Je veux que le programme de savoir précisément de quelle région est cliqué pour que je puisse envoyer une boîte d'alerte de la manière suivante:
imageArray[index].addEventListener("click", function(){
alert " you clicked region number " + index}
Comment est-ce que vous voulez de différent de ce que vous avez?
Il devrait fonctionner.. Avez-vous essayé?
On dirait qu'il est dans une boucle, où
Ah. Je me suis accroché sur le mot "région"
en fait il ne l'est pas, Apparemment, j'essayais juste d'ajouter eventListeners avant j'ai poussé dans un objet de mon tableau j'ai juste remarqué ça ce matin... j'ai pensé que ma syntaxe est tout simplement faux... cette question n'a pas vraiment de sens.. mais merci pour toutes ces réponses!!!
Il devrait fonctionner.. Avez-vous essayé?
On dirait qu'il est dans une boucle, où
index
ne serait pas correct dans le rappelAh. Je me suis accroché sur le mot "région"
en fait il ne l'est pas, Apparemment, j'essayais juste d'ajouter eventListeners avant j'ai poussé dans un objet de mon tableau j'ai juste remarqué ça ce matin... j'ai pensé que ma syntaxe est tout simplement faux... cette question n'a pas vraiment de sens.. mais merci pour toutes ces réponses!!!
OriginalL'auteur Ryan Williams | 2013-07-31
Vous devez vous connecter pour publier un commentaire.
Sûr. Vous pouvez simplement utiliser une fermeture à économiser de l'indice de l'itération. Sinon il y a partagée par la même portée de la fonction et vous donnera la valeur de la même itération. La création d'une fonction distincte pour chaque permettra d'économiser de l'état de l'intérieur de la fonction.
ou mieux
ES6 à la rescousse
À l'aide de la
let
mot clé crée un bloc de portée de la variable d'itération et d'avoir le bon index lorsque le gestionnaire d'événements est appelé.Je suis d'accord avec vous .. Mais il pourrait y avoir des cas où l'utilisateur ne pourrait pas comprendre comment il fonctionne réellement, à moins d'y voir un exemple détaillé.. C'est la raison que j'ai laissé de côté le premier exemple afin qu'ils puissent comparer la façon dont le 1er exemple peut être écrit dans un nettoyeur de manière
Merci @Sushanth-- - je mettre fin à ces "lambda de levage" situations avant et peuvent généralement travailler sur une meilleure voie, mais il est bon de voir deux side-by-side.
OriginalL'auteur Sushanth --
Quelque chose comme cela devrait fonctionner:
La raison pour laquelle il travaille est parce qu'il crée une fermeture qui contient la valeur de
index
qui sera affiché dans le message d'alerte. Chaque fois que la boucle crée un autre fermeture de la tenue d'une autre valeur deindex
.Quelqu'un n'a probablement pas vérifier l'horodatage et de la pensée que vous avez copié la réponse ci-dessus.
OriginalL'auteur Lee Meador
Sûr, une fermeture est la solution, mais depuis qu'il a Ext chargé, il peut aussi bien l'utiliser et obtenir quelques très lisible le code. L'indice est passé en second argument de la
Ext.Array.each
(aliasExt.each
).OriginalL'auteur rixo
C'est ce que j'utilise pour
div
id:Bonne Chance!
OriginalL'auteur Alexander Rulezovsky