¿Cuál es la mejor manera de asociar un evento con una clase en ActionScript/Flex 3?
actionscript-3 events (2)
ActionScript 3 / Flex 3 - Agregar eventos personalizados a una clase
Digamos que tengo el siguiente evento:
import flash.events.Event;
public class SomeEvent extends Event
{
public static const EVENT_ACTION:String = "eventAction";
public function SomeEvent(type:String) {
super(type);
}
override public function clone():Event {
return new SomeEvent(this.type);
}
}
... y la siguiente clase:
public class SomeClass extends EventDispatcher
{
public function someFunction():void
{
dispatchEvent(new SomeEvent("eventAction"));
}
}
¿Cuál es la mejor manera de mostrar que ''SomeClass'' arroja ''SomeEvent''? La única forma que he encontrado es decorar ''SomeClass'' con el atributo [Event], de la siguiente manera:
[Event (name="eventAction", type="SomeEvent")]
Esto me permite crear una instancia de la clase y agregar un detector de eventos al hacer esto:
var someClassInstance:SomeClass = new SomeClass();
someClassInstance.addEventListener(SomeEvent.EVENT_ACTION, mycallbackmethod);
¿Hay una mejor manera de hacer esto? Poner el atributo [Event] en la clase seguido de algunos literales de cadena simplemente se siente ... mal. Gracias de antemano por la ayuda!
Lo sé, me siento de la misma manera; usar los literales de cadena parece un poco mal de alguna manera. Pero a mi leal saber y entender, a partir de toda la documentación que he visto y las charlas a las que he asistido y al leer el código fuente de Flex, etc., parece que esa es la manera correcta de hacerlo.
Lo estás haciendo bien. Actualmente, el compilador AS3 solo permite literales de cadena en metadatos. Las constantes no pueden ser usadas.
Por cierto, la base de datos de errores públicos de Adobe tiene una solicitud de características para permitir constantes de ActionScript en metadatos . Siéntase libre de votar por ello.