Проблема с event.target

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Проблема с event.target

Сообщение wierusna »

На сцене есть 2 объекта, один из которых содержит в себе еще объекты, а второй является стандартным компонентом TileList.

osnova - объект на сцене, который содержит в себе еще объекты и передает их через event:MouseEvent (Принцип работы такой же, как и у интерактивной карты областей)
imglist - TileList, в который подгружаются картинки из XML файла после нажатия на один из объектов в osnova

Вот код (оставил комментарии в коде для того, что бы было понятней)

Код: Выделить всё

osnova.addEventListener(MouseEvent.CLICK, loadXML)function loadXML(event:MouseEvent):void {    var XMLdata:XML = new XML();    var XMLLoader:URLLoader = new URLLoader();    XMLdata.ignoreWhite=true;    var target:String = event.target.name + "2"; //Записывает одно имя с добавлением 2ки на конце (имя ---> имя2)               XMLLoader.load(new URLRequest("ava.xml"));    XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded)    function xmlLoaded(e:Event):void {        XMLdata = new XML(e.target.data);                                 imglist.dataProvider.removeAll(); //очищяем TileList от предыдущих картинок         for (var i:int=0; i<XMLdata[event.target.name].length(); i++){                                    imglist.addItem({label:i, source:XMLdata[event.target.name][i].@url});                    }            imglist.addEventListener(Event.CHANGE, loadImgFromXml); // Добавляем слушатель к TileListfunction loadImgFromXml(event2:Event):void { // загружаем картинки из XML в TileList trace(target);  // Выводит n-коллвичество имен из переменной target, если нажатий было n-раз osnova[target].x = XMLdata[event.target.name][event2.currentTarget.selectedItem.label].@x; // Тут то и возникает проблема с переменной target (грузит n-картинок)osnova[target].y = XMLdata[event.target.name][event2.currentTarget.selectedItem.label].@y; // Тут то и возникает проблема с переменной target (грузит n-картинок)osnova[target].load(new URLRequest(event2.currentTarget.selectedItem.source)); imglist.removeEventListener(Event.CHANGE, loadImgFromXml); }}


Проблема в том, что если я кликну на 1 из объектов, содержащихся в osnova, а затем выберу картинку в imglist (TileList), загрузится 1 картинка. Но в том случае, если я кликну сначала на 1 объект, а затем на 2ой и только потом выберу картинку в imglist, то загрузится 2 картинки. То есть через переменную target передается два имени вместо одного и загружается 1 картинка в два объекта.

Если не понятно, вот схема:
1.Так должно быть:
Клик на объект 1 -----> выбор картинки в imglist ----> загрузка одной картинки, которая соответствует имени объекта 1
Клик на объект 1 -----> Клик на объект 2----> выбор картинки в imglist ----> загрузка одной картинки, которая соответствует имени объекта 2 (то есть последнего объекта, на который я кликнул)

2. Как у меня сейчас (неправильно):
Клик на объект 1 -----> выбор картинки в imglist ----> загрузка одной картинки, которая соответствует имени объекта 1
Клик на объект 1 -----> Клик на объект 2----> выбор картинки в imglist ----> загрузка одной картинки ОДНОВРЕМЕННО В ДВА ОБЪЕКТА, которая соответствует имени объекта 2 (то есть последнего объекта, на который я кликнул)

Если по прежнему непонятно, скину .fla файл в ЛС. Пожалуйста помогите!
P.S. Особенно жду ответа от Alazaur, хороший он человек)
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Проблема с event.target ! очень нужна ваша помощь!

Сообщение Alazaur »

P.S. Особенно жду ответа от Alazaur, хороший он человек)
Внезапно :))) Спасибо за хорошего человека.
По теме:
Конечно не знаю зачем вам понадобилось заново перезагружать XML при каждом клике, ну видимо надо.
А решение проблемы добавить

Код: Выделить всё

if(imglist.hasEventListener(Event.CHANGE)) imglist.removeEventListener(Event.CHANGE, loadImgFromXml);
в начало функции loadXML()
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Проблема с event.target ! очень нужна ваша помощь!

Сообщение Alazaur »

Хотя нет я туплю, здесь же вложенные функции.
Нужно делать переменные target и XMLdata глобальными, чтобы вынести функции друг из друга. Тогда прокатит.
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Re: Проблема с event.target ! очень нужна ваша помощь!

Сообщение wierusna »

Alazaur Аааа, спасибо вам огромнейшее! Все работает, как и должно.
Ответить