Я использую этот небольшой класс, который я создал некоторое время назад - он делает добавление слушателей для умножения кнопок быстрее, проще и чище:
package
{
public class ButtonCollection extends Object
{
// current list
private var _clist:Array = [];
/**
* Merge instances of SimpleButton with listeners
* @param list A list of buttons and listeners to merge
*/
public function merge(...list):void
{
var i:Object;
for each(i in list)
{
i.button.addEventListener(i.event, i.callback);
_clist[_clist.length] = i;
}
}
/**
* Removes all previously added listeners
*/
public function clear():void
{
var i:Object;
for each(i in _clist)
{
i.button.removeEventListener(i.event, i.callback);
}
_clist = [];
}
}
}
Использование:
Вот как я использую этот класс для добавления слушателей к двум созданным мной кнопкам с именами экземпляров a и b .
var bc:ButtonCollection = new ButtonCollection();
bc.merge(
{button: a, event: MouseEvent.CLICK, callback: _click},
{button: b, event: MouseEvent.CLICK, callback: _click},
{button: b, event: MouseEvent.MOUSE_OVER, callback: _mouseOver}
);
function _click(e:MouseEvent):void
{
trace(e.target.name + " was clicked");
}
function _mouseOver(e:MouseEvent):void
{
trace(e.target.name + " was rolled over");
}
Класс также дает вам простой способ удалить все ранее добавленные слушатели, когда вы закончите:
bc.clear();