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

Регистрация: Mar 2010
Сообщений: 9
По умолчанию назначить Listener каждой картинке из массива

Есть двухмерный массив Personag1Veshi ["kartinkaVeshi"] ["nameVeshi"]

["kartinkaVeshi"] - содержит картинки вещей
["nameVeshi"] - содержит соответствующие имена вещей

По ходу программы массив Personag1Veshi изменяется. Некоторые вещи удаляются, некоторые добавляются.

Обновление Массива вещей на Экране происходит в единственном месте программы
(при условии что в него были внесены изменения) с помощью цикла.

ЗАДАЧА:
Каждая выведенная на экран картинка вещи должна уметь перетаскиваться мышкой.
И мы должны знать какое имя (["nameVeshi"]) у вещи которая у нас перетаскивается в данный момент.

Я для этого попытался циклом навесить по слушателю на каждую картинку
Но это не работает и вообще как то "подозрительно" выглядит.))
Может для решения этой задачи пользуются какой то особенной фишкой?

Код AS3:
for (var i4:int = 1; i4 <=(KolichestvoVeshei); i4++) {
 
	//выводим картинки вещей с интервалом по 50 пикселей по оси X
	Personag1Veshi["kartinkaVeshi"][i4].x=i4*50;
 
	//выводим картинки на уровне 500 пикселей по оси Y
	Personag1Veshi["kartinkaVeshi"][i4].y=500;
 
	//Добавляем вещь в список отображения
	addChild(Personag1Veshi["kartinkaVeshi"][i4]);
 
	//Каждая выведенная на экран картинка вещи может быть перетащена мышкой 
	//Для этого на каждую вещь персонажа вешаем слушатель
 
	Personag1Veshi["kartinkaVeshi"][i4].addEventListener(MouseEvent.MOUSE_DOWN, PeretaskivaemVeshStart);
	Personag1Veshi["kartinkaVeshi"][i4].addEventListener(MouseEvent.MOUSE_UP, PeretaskivaemVeshStop);
 
	//Функции слушателей Вещей так НЕ РАБОТАЮТ
	//TypeError: Error #1006: value не является функцией.
 
	function PeretaskivaemVeshStart(event:MouseEvent):void {
		trace("вещь тащим");
		Personag1Veshi["kartinkaVeshi"][i4].startDrag();
	}
	function PeretaskivaemVeshStop(event:MouseEvent):void {
		trace("вещь отпустили");
		Personag1Veshi["kartinkaVeshi"][i4].stopDrag();
	}
}