Как создать уникальный обработчик событий для метки / кнопки в ActionScript в цикле for? - PullRequest
1 голос
/ 17 февраля 2012

На данный момент у меня есть это в Actionscript (для Flex), чтобы создать 26 меток в BorderContainer (ID буквы ):

var lettersArray:Array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

for(var indexLetter:String in lettersArray) {
    var labelLetter:Label = new Label();
    labelLetter.text = lettersArray[indexLetter];
    labelLetter.addEventListener(MouseEvent.CLICK, function():void { getUsers(lettersArray[indexLetter]); });

    letters.addElement(labelLetter);
}

Но когда я нажимаю на букву, функция getUsers отправляет только букву Z. Поэтому, когда я создаю метки из цикла for, только последний обработчик событий работает с последней созданной меткой. Как мне это исправить?

1 Ответ

2 голосов
/ 17 февраля 2012

Я предполагаю, что getUsers(lettersArray[indexLetter]) - ошибка, поскольку вы не можете получить доступ к таким элементам массива

var lettersArray:Array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

for each(var letter:String in lettersArray) {
    var labelLetter:Label = new Label();
    labelLetter.text = letter;
    labelLetter.addEventListener(MouseEvent.CLICK, function():void { getUsers(e.currentTarget.text); });

    letters.addElement(labelLetter);
}
...