Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передать переменную в функцию к слушателю (http://www.flasher.ru/forum/showthread.php?t=208989)

stepa323 29.09.2014 15:50

Передать переменную в функцию к слушателю
 
Такой вопрос, это единственный способ передать аргумент в функцию в слушателе?
Код AS3:

        endInfo.catBatman.addEventListener(MouseEvent.CLICK, function(){choiceCostume(typeCat="Batman");}, false, 0, true);


Gerbert 29.09.2014 16:13

Код AS3:

private function test(  a, b ):void
{
        // сюда аргументы можно передать так
        // test( a, b );
        // test.call( context, a, b );
        // test.apply( context, [a, b] );
        // И есть вероятность того, что ещё можно через describeType
        // но я не могу так вот на вскидку показыть...
}

Добавлено через 1 минуту
И У Вас неправильно написано, в передаваемом методе в аргументах должен быть event указан.
И в as3 не принято анонимные функции делать.

cleptoman 29.09.2014 18:43

есть всего два вменяемых способа: передать нужные данные или в свойсте события или таргета события

dimarik 29.09.2014 19:55

http://www.flasher.ru/forum/showthread.php?t=147849

van90 01.10.2014 17:36

Мне пришелся по душе такой способ:
Код AS3:

obj.params = 
{
 //свойства, которые надо передать
};
 
obj.addEventListener(MouseEvent.CLICK, onClick);
 
private function onClick(e: MouseEvent) : void
{
    //тут обитают все эти параметры
    e.currentTarget.params
}


Babylon 01.10.2014 18:41

а причём здесь хэндлер?

dimarik 01.10.2014 20:12

Цитата:

Сообщение от van90 (Сообщение 1172829)
Мне пришелся по душе такой способ:
Код AS3:

obj.params = {
 //свойства, которые надо передать
};
 
obj.addEventListener(MouseEvent.CLICK, onClick);
 
private function onClick(e: MouseEvent):void {
    //тут обитают все эти параметры
    e.currentTarget.params
}


По сути способов получения всего два + один читерский.
Про первые два рассказал cleptoman, еще в литературе называют их как push и pull соответственно.
Третий способ зависит от таргета. Раз уж к нам в хэндлер приходит таргет, то в зависимости от него, эмпирически получать тот или иной параметр.


Часовой пояс GMT +4, время: 15:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.