Похоже, у вас есть два разных варианта или проблемы. Если вы измените последний параметр в:
item.addEventListener(MouseEvent.CLICK, traceMe, false, 0, true);
до false
, тогда все должно работать, потому что ваш обработчик событий будет обрабатывать щелчки мыши. Конечно, это означает, что если вы нажмете кнопку «проверки» во второй раз, то у вас будет два набора слушателей, реагирующих на щелчки мышью по кнопкам одна, две и три.
Таким образом, вполне вероятно, что реальное решение, которое вас интересует, это оставить строку, приведенную выше, такой же, и вместо этого изменить следующую строку:
var t:ButtonListener = new ButtonListener(btnT1, btnT2, btnT3);
Если вы измените вышеприведенную строку, чтобы сохранить слушателя кнопок как часть вашего класса, он будет доступен для реагирования на щелчки мыши, а не для сбора мусора:
_buttonListener = new ButtonListener(btnT1, btnT2, btnT3);
Это, конечно, предполагает, что вы определили _buttonListener
в блоке mx: script:
<mx:Script><![CDATA[
var _buttonListener:ButtonListener;
]]></mx:Script>
РЕДАКТИРОВАТЬ за комментарий:
В предоставленном коде t
, ButtonListener
, выходит за рамки. Когда он это делает, он собирает мусор, если вы не используете сильные ссылки, которые вы не используете для последнего параметра в вашем вызове addEventListener
.
Таким образом, сделайте слушателя кнопки членом основного класса:
Main.mxml будет читать:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Button x="23.5" y="10" label="checker" click="{goListen()}" />
<mx:Button id="btnT1" x="252.5" y="10" label="t1" />
<mx:Button id="btnT2" x="309" y="10" label="t2"/>
<mx:Button id="btnT3" x="366" y="10" label="t3"/>
<mx:Script>
<![CDATA[
private var _buttonListener:ButtonListener;
private function goListen():void
{
_buttonListener = new ButtonListener(btnT1, btnT2, btnT3);
}
]]>
</mx:Script>
</mx:Application>
Поскольку прослушиватель событий больше не будет выходить из области видимости, слабые ссылки, используемые прослушивателями событий, будут работать должным образом, будучи мусором, когда __buttonListener
выходит из области видимости.