я тоже не понял прикола с невозможнстью повесить мышиные слушатели при том, что 'нужно выводить при нажатии на нее ее id'
по сути вопроса в этом анонимном handler'е видна var btn:UIButton, которая после отработки цикла естественно указывает на последний, а нужна ссылка на конкретный экземпляр
т.е. если нужен изврат с определением handler именно в цикле, то как-то так это может быть
(это только для посмотреть, здесь конечно логичнее этот handler в самом UIButton и определить)
Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite
{
public function Main():void
{
var i:int;
for (i = 0; i < 10; i++)
{
var btn:UIButton;
btn = new UIButton();
btn.id = i;
btn.y = i * 25;
addChild(btn);
btn.handler = function():void
{
trace("this.id: " + UIButton(this).id);
trace("btn.id: " + btn.id);
}
}
// чтобы как-то посмотреть работу btn.handler
this.addEventListener(MouseEvent.CLICK, this_click);
}
private function this_click(e:MouseEvent):void
{
var btn:UIButton = e.target as UIButton;
btn.handler();
}
}
}
import flash.display.Sprite;
class UIButton extends Sprite
{
public var id:int;
public var handler:Function;
public function UIButton()
{
graphics.beginFill(0x0);
graphics.drawRect(0, 0, 60, 20);
}
}
|