Как вы передаете операторы через addEventListener? - PullRequest
1 голос
/ 06 февраля 2012

Я пытался передать аргументы через событие addEventListener в ActionScript, например ...

target.addEventListener("pComp", rakeSoil(target));

но я получаю ошибки.

Iv пытался Google, но не повезло: /

Спасибо, что ответили, если вы сделаете:)

Ответы [ 4 ]

4 голосов
/ 06 февраля 2012

Цель уже пройдена как часть события, либо event.currentTarget, либо event.target будет тем, что вы хотите.

Если вы хотите что-то еще пропустить, создайте пользовательское событие. Добавьте свойство в пользовательское событие.

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

Попробуйте добавить дополнительный метод в качестве прослушивателя событий:

target.addEventListener ("pComp", targetListener);

...

private function targetListener (event:Event):void {

   rakeSoil (event.currentTarget);

}
0 голосов
/ 27 февраля 2013

Я всегда считал, что анонимные функции доставляют больше хлопот, чем они того стоят. Я бы просто следовал стандартному расположению кода обработчика событий. Это более формально и требует немного больше усилий заранее, но нет никакой двусмысленности, и это намного более читабельно, когда вы вернетесь к нему через год (сокращает продолжительность царапин на голове):

//  Target extends EventDispatcher
private var target:Target;

public function listenToTarget();
{
    target = new Target();
    target.addEventListener("pComp", pCompHandler);
}

private function pCompHandler(event:Event):void
{
    target.rakeSoil();
}

Хотя, теперь, когда я посмотрю на него более внимательно, почему вы заставляете этот объект делать что-то, что Target должен быть способен обрабатывать самостоятельно?

0 голосов
/ 06 февраля 2012

Как это то, что вы хотите:

   {
        var target:EventDispatcher = ...;
        Function rakeSoil = function (e:Event):void 
        {
            // handle target 
        }

        target.addEventListener("pComp", rakeSoil);
    }

rakeSoil - это функция первого класса (или замыкание), когда событие отправляется, оно вызывается и вы можете получить к нему доступ 'target'.

РЕДАКТИРОВАТЬ:

Посмотрите на Закрытие (информатика)

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