Esta pregunta no se refiere solo al tipo de evento MouseEvent.CLICK sino a todos los tipos de eventos que ya existen en AS3. Leí mucho sobre eventos personalizados, pero hasta ahora no podía entender cómo hacer lo que quiero hacer. Voy a tratar de explicar, espero que entienda:Cómo crear un evento personalizado MouseEvent.CLICK en AS3 (pasar los parámetros a la función)?
Aquí es una ilustración de mi situación:
for(var i:Number; i < 10; i++){
var someVar = i;
myClips[i].addEventListener(MouseEvent.CLICK, doSomething);
}
function doSomething(e:MouseEvent){ /* */ }
Pero yo quiero ser capaz de pasar somevar como un parámetro para doSomething. Así que probé esto:
for(var i:Number; i < 10; i++){
var someVar = i;
myClips[i].addEventListener(MouseEvent.CLICK, function(){
doSomething(someVar);
});
}
function doSomething(index){ trace(index); }
Este tipo de trabajo funciona pero no como esperaba. Debido a los cierres de funciones, cuando los eventos MouseEvent.CLICK se activan, el para ya se ha terminado y someVar contiene el último valor, el número en el ejemplo. Por lo tanto, cada clic en cada clip de película llamará a doSomething pasando como parámetro. Y no es lo que quiero
Pensé que la creación de un evento personalizado debería funcionar, pero luego no pude encontrar una forma de activar un evento personalizado cuando el evento MouseEvent.CLICK se dispara y pasarle el parámetro. Ahora no sé si es la respuesta correcta.
¿Qué debo hacer y cómo?
Para cualquiera que esté investigando esto, agregué un ejemplo de código rápido sobre pasar parámetros a una función aquí: http://rocketwidget.com/how-to-pass-additional-parameters-to-an-event-listener- in-flex/ –