Inf Actionscript 3 (as3), как передать параметр в анонимную функцию? - PullRequest
1 голос
/ 04 августа 2010

В as3 я добавляю прослушиватель событий, а затем присоединяю к нему анонимную функцию:

myBox.addEventListener (MouseEvent.ROLL_OVER, Функция (е: MouseEvent): недействительная { Alert.show (количество, «ящик предупреждений»); );

Теперь весь этот кусок кода зациклен n раз. Теперь у меня есть n myBoxes, и всякий раз, когда я наведите курсор мыши на поле, оно должно предупредить имя. Но я вижу, что каждое поле использует последнее значение count.

Как передать параметр или значение анонимной функции? (я думаю, что при пролонгации ожидается только одна переменная)

Ответы [ 2 ]

5 голосов
/ 04 августа 2010

Вам необходимо создать новую область видимости, выполнив функцию:

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 голос
/ 04 августа 2010

Вместо того чтобы полагаться на индекс, не будет ли проще (и лучше) получить currentTarget события и получить значение одного из его членов?

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

Если у вас абсолютночтобы сослаться на индекс, вы можете получить это по

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

И теперь, когда я об этом думаю, вам даже не нужно делать эту анонимную функцию вообще, если вы используете модель событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...