Непонятное название, мое плохое.AS3 Использование многих слушателей событий, вызывающих проблемы, как уменьшить?
В принципе, у меня есть список имен. Пройдя через, я добавляю MovieClip, задаю ему 2 свойства, имя и идентификатор. MovieClip одновременно работает как кнопка, и я добавляю 4 прослушивателя, мышь вверх, вниз или вниз. Я делаю это с каждым именем. Функция, каждая из которых установлена, одинакова.
EX: enemyButton [i] .addEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);
Враг-идентификатор вызывает «недействительное свойство», время от времени, когда я нажимаю, он вообще не падает, но иногда мне приходится ударять по кнопке несколько раз.
Я сузил проблему до того, что ее вызвали слушатели.
Функция так просто, как:
EX: Функция mouseUpHandler (е: MouseEvent): пустота {enemySelected (e.target.enemyID); }
Мой вопрос: слишком много слушателей может быть проблемой? и как я могу их уменьшить?
Вот отрывок из цикла:
var C:Class = Class(getDefinitionByName(enemies[i]));
var c:* = new C();
c.gotoAndStop(1);
enemyButton[i].enemyID = i;
c.name = "select" + i;
c.enemyID = i;
trace(c.enemyID);
enemyButton[i].addChild(c);
enemyScroll.addChild(enemyButton[i]);
enemyButton[i].enemyName.text = info[i][Const.NAME];
enemyButton[i].setChildIndex(enemyButton[i].getChildByName("enemyName"), enemyButton[i].numChildren-1);
Спасибо.
Можете ли вы опубликовать код цикла? Сколько объектов вы добавляете? Не должно быть проблем с количеством слушателей. – takteek
Нет, кажется, ошибка, которую вы получаете, заключается в том, что вы обращаетесь к enemyButton [X], когда итерация ... с использованием объекта [X] ссылается на свойство на этом объекте, а одно из них недействительно для присоединения слушателя к. Однако, поскольку вы не размещали код и не сообщали точное сообщение об ошибке, это чистая спекуляция и может быть совершенно неправильным советом. –
Это определенно странная проблема. Вчера вечером попробовал, может быть, 15 раз, чтобы получить ошибку, и не мог. Первая попытка сегодня, ошибка возникла. ReferenceError: Ошибка # 1069: Идентификатор свойства свойства не найден на flash.text.TextField, и значение по умолчанию отсутствует. \t в WarmingInDanger_fla :: MainTimeline/mouseUpHandler() –