He leído mucho a través de publicaciones en el foro y tutoriales, pero todavía no puedo envolver mi cerebro en eventos y oyentes de eventos. Tengo un ejemplo bastante simple, pero no puedo hacer que funcione.agregando un detector de eventos personalizado en as3
Tengo una matriz Recolección de objetos personalizados en un repetidor, cuando se hace clic en uno de esos objetos, quiero que un componente diferente muestre los datos asociados con ese objeto.
Esto es lo que tengo, pero el oyente nunca responde (el despachador parece estar trabajando, porque se crea el nuevo evento y puedo ver el trazado con la salida adecuada). Sospecho que es porque cuando llamo addEvent Oyente, lo estoy haciendo en el objeto equivocado. Según entiendo, el objeto que mostrará los datos del objeto es el objeto que debería tener el oyente del evento, y escuchará todos los eventos de esta naturaleza, pero tal vez no entendí bien.
Mi evento personalizado:
public class SelectObjectEvent extends Event
{
public function SelectObjectEvent(customEventString:String, myObject:customObject)
{
super(customEventString, true, false);
trace(customEventString+" "+myObject);
}
}
}
Mi objeto personalizado tiene la siguiente función que se llama el clic:
public function selectObject(myObject:customObject):void
{
dispatchEvent(new SelectObjectEvent("OBJECT_SELECTED", customObject));
}
y el componente Quiero mostrar el objeto seleccionado tiene el siguiente constructor:
public function SelectedObjectDisplayClass()
{
addEventListener("OBJECT_SELECTED", this.showObject)
}
public function showObject(event:Event):void
{
trace("Show object: "+event);
}
Bueno ... sí, el segundo trozo pertenece a un objeto que distribuye el evento, pero no se puede hacer clic, y no se extiende EventDispatcher por lo que yo sé (que amplía UIComponent.) Es una objeto de juego que se encuentra en un componente de lista. Cuando se selecciona ese objeto en la lista, distribuye su evento. ¿Cada objeto que distribuye un evento debe extender EventDispatcher? – Martholomew
Tal vez entonces mi problema es que la lista debe enviar el evento, con el objeto seleccionado en el argumento? – Martholomew
Bueno, DisplayObject extiende EventDispatcher, por lo que cualquier cosa que tengas en el escenario también lo hará. No sé quién debería enviar el evento, quién sabe cuándo hacerlo, supongo, pero eso depende de tu código. Lo que es definitivo es que si A distribuye el evento y B lo recibe, entonces su llamada debe ser someA.addEventListener (eventType, someB.method). En este momento, parece que B tiene que agregar un detector de eventos a sí mismo. – fenomas