Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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();
	}
}

Старый 16.03.2010, 12:44
F1esk вне форума Посмотреть профиль Отправить личное сообщение для F1esk Найти все сообщения от F1esk
  № 2  
Ответить с цитированием
F1esk
 
Аватар для F1esk

Регистрация: Jun 2008
Адрес: Tomsk
Сообщений: 88
так у вас кривой итератор i4 в момент вызова функций равен KolichestvoVeshei + 1.
Необходимо дёргать функцию, в области видимости которой сохранится ссылка на объект, перетаскивать который хотим.


Последний раз редактировалось F1esk; 16.03.2010 в 12:48.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.