Я проделал много чтения через сообщения и учебники форума, но я все еще не могу обернуть мозг вокруг событий и прослушивателей событий. У меня довольно простой пример, но я не могу заставить его работать.добавление пользовательского прослушивателя событий в as3
У меня есть массивСоздание пользовательских объектов в ретрансляторе, когда один из этих объектов нажат, я хочу, чтобы другой компонент отображал данные, связанные с этим объектом.
Вот что у меня есть, но слушатель никогда не отвечает (диспетчер, похоже, работает, потому что новое событие создано, и я вижу трассировку с правильным выходом.) Я подозреваю, что это происходит, потому что когда я вызываю addEvent Слушатель, я делаю это на неправильном объекте. Я понимаю, что объектом, который будет отображать данные объекта, является объект, который должен иметь прослушиватель событий, и слушать все события такого рода, но, возможно, я неправильно понял.
Мой заказ событие:
public class SelectObjectEvent extends Event
{
public function SelectObjectEvent(customEventString:String, myObject:customObject)
{
super(customEventString, true, false);
trace(customEventString+" "+myObject);
}
}
}
Мой пользовательский объект имеет следующую функцию, которая вызывается по щелчку:
public function selectObject(myObject:customObject):void
{
dispatchEvent(new SelectObjectEvent("OBJECT_SELECTED", customObject));
}
И компонента Я хочу, чтобы отобразить выбранный объект имеет следующий конструктор:
public function SelectedObjectDisplayClass()
{
addEventListener("OBJECT_SELECTED", this.showObject)
}
public function showObject(event:Event):void
{
trace("Show object: "+event);
}
Ну ... да, второй кусок принадлежит к объекту, который отправляет событие, но это не интерактивное, и оно не распространяется EventDispatcher, насколько я знаю (она расширяет UIComponent.) Это который находится в компоненте List. Когда этот объект в списке выбран, он отправляет свое событие. Каждый объект, который отправляет событие, должен расширять EventDispatcher? – Martholomew
Может быть, моя проблема в том, что List должен отправить событие с выбранным объектом в аргументе? – Martholomew
Ну, DisplayObject расширяет EventDispatcher, поэтому все, что у вас есть на сцене, также будет. Я не знаю, кто должен отправить мероприятие - кто бы ни знал, когда это делать, я полагаю, но это зависит от вашего кода. Определенно, что если A отправляет событие, а B получает его, тогда ваш вызов должен быть некоторым .AdadEventListener (eventType, someB.method). Сейчас у вас, кажется, есть B, добавляющий к себе прослушиватель событий. – fenomas