2012-02-06 2 views

ответ

2

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

target.addEventListener ("pComp", targetListener); 

... 

private function targetListener (event:Event):void { 

    rakeSoil (event.currentTarget); 

} 
+0

Или, если у вас есть возможность, вы можете просто сделать rakeSoil в этом случае, а затем получить доступ к currentTarget, вместо того, чтобы использовать currentTarget. –

0

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

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

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

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

EDIT:

Посмотрите Closure (computer science)

4

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

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

0

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

// 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 должно быть способным самостоятельно обрабатывать?

Смежные вопросы