Siempre trato de mejorar mis prácticas de programación y este hábito mío me ha hecho pensar que tal vez no sea el mejor enfoque. Al manejar las llamadas a la función MouseEvent
tengo una tendencia a usar Event
sobre MouseEvent
en los parámetros.AS3: ¿Por qué usar MouseEvent como función Param cuando el evento funciona bien?
Ejemplo:
mc.addEventListener(MouseEvent.CLICK, handleClick);
private function handleClick(e:Event):void
{
trace(e.currentTarget.name + " was Clicked");
}
¿Hay algunas funciones o propiedades dentro de MouseEvent
disponible en la clase Event
que haría uso de MouseEvent
más de una necesidad? La única razón por la que puedo pensar por mi cuenta es mantener tus params de eventos/funciones fuertemente tipados.
excelente, gracias por el ejemplo y la explicación. –
¡Ningún problema! Probablemente también debería haber notado que otra razón por la que es útil ser lo más específico posible con el tipado, es que el compilador AS3 no realiza ninguna comprobación de tipo en tiempo de compilación de los argumentos de su controlador de eventos. Esto es cierto también para cualquier caso en el que pase una referencia de función (como para una devolución de llamada). Si tiene una discrepancia de recuento de tipo o argumento, será una ruptura de tiempo de ejecución. Pero el peor de los casos sigue siendo cuando no falla, pero debería ... Además, cuando utilice el tipo correcto "MouseEvent", se beneficiará del autocompletado de su editor de código para todas las propiedades disponibles. –
Además, si bien su pregunta es específicamente sobre Event y su subclase MouseEvent, la pregunta subyacente más general es: ¿cuándo debería usar una referencia de clase base para una instancia de una (o más) de sus subclases, y la respuesta a esa pregunta es no es rápido, sino más bien una explicación del polimorfismo en general, de un libro o la wikipedia: http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming –