Показать сообщение отдельно
Старый 21.03.2013, 14:42
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
я тоже не понял прикола с невозможнстью повесить мышиные слушатели при том, что 'нужно выводить при нажатии на нее ее 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);
 
	}
}