|
|
|||||
Регистрация: Mar 2007
Сообщений: 12
|
Динамический путь для EventListener
Добрый день
Есть следующая структура flash ролика: map.материк.страна Муви клипы с материками и странами загоняю в 2 массива. мне нужно на все материки и страны повесить addEventListener сохраняя иерархию. Но не выходит для addEventListener прописать двойную переменную в пути к мувику. Вот код как я делаю, может подскажите как правильно? var materiki:Array = new Array(); var str:Array = new Array(); for(var m:int = 1; m <= map.numChildren-1; m++){ var strani = map.getChildAt(m); materiki.push(strani); } for each (var item:* in materiki) { var iname = item.name var inum = map[iname].numChildren-1; for(var mm:int = 1; mm <= inum; mm++){ var strana = map[iname].getChildAt(mm); str.push(strana); } } for each (var itemm:* in materiki) { var itemvar = itemm.name; map[itemvar].addEventListener(MouseEvent.CLICK, callLinkmat); map[itemvar].addEventListener(MouseEvent.MOUSE_OVER,zoominmat); map[itemvar].addEventListener(MouseEvent.MOUSE_OUT,zoomoutmat); for each (var itemstr:* in str) { var itemst = itemm.name +"."+ itemstr.name; map[itemst].addEventListener(MouseEvent.CLICK, callLinkmat); map[itemst].addEventListener(MouseEvent.MOUSE_OVER,zoominmat); map[itemst].addEventListener(MouseEvent.MOUSE_OUT,zoomoutmat); } } TypeError: Error #1010: Термин не определен и не имеет свойств. at flashmapgreen_fla::MainTimeline/frame1() Чувствую что в какой то мелочи ошибся, но увы не удается найти где. |
|
|||||
Суть ошибки в том, что идет обращение к неопределенному(равному null) объекту.
Нужно поставить в цикле трейсы и понять на что конкретно ругается. |
|
|||||
[+4 06.05.14]
|
for each (var itemstr:* in str) { var itemst = itemm.name +"."+ itemstr.name; trace( itemst , map[itemst] ) // увидишь сразу какого элемента не существует. map[itemst].addEventListener(MouseEvent.CLICK, callLinkmat); map[itemst].addEventListener(MouseEvent.MOUSE_OVER,zoominmat); map[itemst].addEventListener(MouseEvent.MOUSE_OUT,zoomoutmat); }
__________________
Марк Tween |
|
|||||
Регистрация: Mar 2007
Сообщений: 12
|
не существует map[itemst] судя по трейсу, itemst есть выводит в виде "south_america.instance_16". Тогда как к этому пути привязать addEventListener?
пробовал еще вот таким способом, но увы тоже не работает. |
|
|||||
Регистрация: Mar 2007
Сообщений: 12
|
существует 100%, инстанс это инстанс имя мувиклипа.
По всей видимости в пути для addEventListener нельзя использовать строковые переменные, но как тогда сделать путь на объект где в пути 2 динамические переменные? |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Сделайте map - Dictionary, а не object и храните там не имена обьектов, а сами обьекты (ну, т.е. ссылки на них).
UPD: а, там всё запущено %) ну идея где-то такая, но лень в этом рыться. Ну, в общем, по имени обьект почти никогда доставать не надо.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 09.06.2011 в 16:00. |
|
|||||
Регистрация: Mar 2007
Сообщений: 12
|
Все разобрался, спасибо всем большое, проблема была в двойном цикле, внутри которого создавались пути на не существующие объекты. За советы тоже отдельное спасибо.
|
Часовой пояс GMT +4, время: 23:44. |
|
« Предыдущая тема | Следующая тема » |
Теги |
array , Error #1010 , EventListener |
|
|