2010-03-03 7 views
1

Si je faisActionScript 3 renvoi d'événement illégal?

stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) { 
    dispatchEvent(e); 
} 

Je reçois une erreur d'exécution en disant que l'événement ne peut pas être converti en FooEvent. Cependant, il fonctionne très bien si je fais:

stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) { 
    dispatchEvent(new FooEvent(e.things)); 
} 

Pourquoi?

Répondre

3

dispatchEvent appelle clone sur l'événement passé, si cet événement est déjà "utilisé" (c'est-à-dire a été distribué). de ce que vous dites, je suis tout à fait sûr que vous n'avez pas outrepassé clone -method FooEvent et donc il utilise l'implémentation de Event qui renvoie un plain vanilla Event. C'est la source de votre erreur. Vous devez remplacer la méthode clone dans FooEvent afin de renvoyer les instances appropriées de FooEvent.