Показать сообщение отдельно
Старый 22.02.2010, 08:36
ipman вне форума Посмотреть профиль Отправить личное сообщение для ipman Найти все сообщения от ipman
  № 1  
Ответить с цитированием
ipman

Регистрация: Feb 2010
Сообщений: 24
По умолчанию Динамическое создание обработчика событий

Добрый день. Не могу справиться с проблемкой.

Код AS3:
var wall:Sprite = new Sprite();  
addChild(wall);
 
var images:Array = [  
    "mp3.jpg",  
     "tween.jpg",  
    "uploader.jpg" 
];
 
var iLen:uint = images.length;  
var tile:ImageTile;  
for (var i:uint = 0; i < iLen; i++) {
 
    tile = new ImageTile();  
    wall.addChild(tile);
	tile.name = "box"+i;
    tile.x = i % 5 * 210 + 110;  
    tile.y = Math.floor(i / 5) * 210 + 110;
 
	var imageName:String = images[i];  
	var caption:TextField = tile.getChildByName("caption_tf") as TextField;
	tile.btn1.addEventListener(MouseEvent.CLICK, onBtnClicked );
	caption.text = imageName;
 
 
} 
function onBtnClicked(e:MouseEvent):void{
	trace (tile.name);
	}
Этот код работает.. но с всех трех кнопок возвращает имя последнего добавленного спрайта. Как правильно прицепить уникальный обработчик нажатия на "btn1" для каждого спрайта??

Добавлено через 2 часа 17 минут
btnn = new Btn();
tile.addChild(btnn);
btnn.name = "box"+i;

var imageName:String = images[i];
var caption:TextField = tile.getChildByName("caption_tf") as TextField;
btnn.addEventListener(MouseEvent.CLICK, onBtnClicked );
caption.text = imageName;


}
function onBtnClicked(e:MouseEvent):void{
trace (e.currentTarget.name.toString());
}

оказывается можно еще и так сделать).