есть некоторые другие опции ...
1 использовать сигналов вместо прослушивателей flash-событий, вот пост , который описывает егои дает больше подробностей.Также видеоурок , чтобы быстро начать работу.Причина, по которой я предлагаю это, заключается в том, что вы можете настроить сигнал для передачи параметра, поэтому вам не нужно использовать цель события, которая не всегда работает лучше всего.
2 использовать фабрику функций.
// factory:
public function fooFactory($mc:GridButton):Function{
var $f:Function = new Function($e:MouseEvent):void{
trace($mc.x, $mc.y);
}
// you might want to consider adding these to a dictionary or array, so can remove the listeners to allow garbage collection
return $f;
}
// then assign the function to the button like this
button.addEventListener(MouseEvent.CLICK, fooFactory(button) );
это, по сути, то, что вы хотели сделать, но это будет работать, поскольку переменная position
не меняется.В вашем коде position
меняется каждый раз, когда выполняется цикл, затем, когда вы запускаете функцию слушателя, она использует последнее значение, которое было назначено position
, поэтому вы получаете 255 для всех из них.Дайте мне знать, если это не имеет смысла ...