2

At the moment I have this in Actionscript (for Flex) to create 26 labels in a BorderContainer (ID letters):

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);
}

But when I click on a letter, only the letter Z is sent to the function getUsers. So when I'm creating labels from a for loop, only the eventlistener works for the last created label. How do I fix this?

Harmjan
  • 132
  • 12

1 Answers1

2

I'm assuming that getUsers(lettersArray[indexLetter]) is an error as you can't access array elements like that

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);
}
Richard Walton
  • 4,789
  • 3
  • 38
  • 49