Во Flex есть что-то вроде ссылки «this» для компонента MXML? - PullRequest
1 голос
/ 30 июня 2009

Я мог бы написать то, чего хочу достичь, вот так:

<mx:Button id="someButton" click="doRememberButton(someButton)" ... />

но было бы очень полезно (я собираю довольно большой пользовательский интерфейс), если бы я мог написать:

<mx:Button click="doRememberButton(this)" ... />

Теперь очевидная проблема заключается в том, что «this» указывает не на кнопку, а на основной компонент, определяемый файлом, в котором находится код (например, VBox), но было бы очень полезно, если бы у меня была некоторая ссылка к текущему компоненту MXML.

У кого-нибудь есть решение для этого? Спасибо! Том

Ответы [ 3 ]

2 голосов
/ 30 июня 2009

Встроенные обработчики событий - это просто обернутый код, поэтому вы можете использовать объект события для получения подробной информации о диспетчере и другой информации о событии. Вот так:

<mx:Button click="trace(event.target)" />

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

private function doRememberButton(event:Event):void
{
    ...
}

А в коде MXML:

<mx:Button click="doRememberButton(event)" />

Свойство target класса события является исходным диспетчером события. Существует также свойство currentTarget, которое является текущей целью в цепочке событий. Это относится к барботированию событий. Подробнее об этом можно узнать в Adobe LiveDocs

1 голос
/ 01 июля 2009

вот решение, более точное, как вам нужно

<mx:Button id="someButton" click="doRememberButton(event.currentTarget as Button)"  />

у функции:

private function doRememberButton(thisBtn:Button):void
{
    ...
}

вот и все! :)

1 голос
/ 30 июня 2009
private function doRememberButton(ev: Event) {

//this gives your button
ev.currentTarget;


}
...