Вы не можете выйти из циклов напрямую - какой-то цикл должен будет где-то применяться, но вы можете выйти из циклов косвенно - вы можете позволить циклу ВМ для вас.Вы должны взглянуть на Array.forEach
.
. Простое приложение может быть:
// assuming myArr is your array.
myArr.forEach( function(item:*, index:int, array:Array):void
{
item.addEventListener( MouseEvent.CLICK, myClickHandler );
} );
. Чтобы получить индекс предмета, вы можете сделать что-то более сложное:
myArr.forEach( function(item:*, index:int, array:Array):void
{
item.addEventListener( MouseEvent.CLICK, function( event:Event ):void
{
trace( "my index is", index );
} );
} );
Я должен порекомендовать вам просто кэшировать массив в месте, доступном для вашей функции слушателя, а затем использовать Array.indexOf вместе с event.currentTarget , новы не находите это приемлемым, вы можете использовать forEach следующим образом:
myArr.forEach( function(item:*, index:int, array:Array):void
{
item.addEventListener( MouseEvent.CLICK, function( event:Event ):void
{
trace( "my index is", array.indexOf( item ) );
} );
} );
В зависимости от того, как часто вы вызываете эти методы, просто не так просто использовать это:
// probably not best to have this public
protected var myArr:Array = [/* whatever goes in here */]
public function register():void
{
myArr.forEach( addHandler );
}
protected function addHandler( item:IEventListener, index:int, arr:Array ):void
{
item.addEventListener( MouseEvent.CLICK, myClickHandler );
}
protected function myClickHandler( event:MouseEvent ):void
{
trace( event.currentTarget, "is at", myArr.indexOf( event.currentTarget ) );
}
Но я не могу быть уверен, не зная больше о вашем конкретном случае использования.