Fondamentalement j'ai cette fonction:AS3: en fonction anonyme externe addEventListener ne fonctionne pas
private function clickURL(url:String):Function{
trace("Function has been instantiated");
return function(event:MouseEvent):void{
trace("Function has been run");
ExternalNavigation.newBrowserWindow(url);
}
}
Le but de cette fonction est de prendre une url, mettre l'URL dans une autre fonction et de transmettre cette fonction de retour donc je peut simplement taper:
urlButton.addEventListener(MouseEvent.CLICK, clickURL("http://test.com"));
la fonction cLICKURL retourne la fonction avec le paramètre d'événement de retour à la fonction addEventListener. De cette façon, je précise quelle URL qui sera ouverte lorsque vous appuyez sur le bouton.
est ici la sortie de ce qui se passe lorsque vous l'utilisez:
//Function has been instantiated
La fonction Internatl ne s'exécuter lorsque vous cliquez sur le bouton. J'ai donc décidé de l'essayer avec un faux événement pour être sûr de ne rien manquer.
var clickTest:Function = clickURL("http://stackoverflow.com");
clickTest(new MouseEvent(MouseEvent.CLICK));
est ici la sortie:
//Function has been instantiated
//Function has been run
Comme vous pouvez le voir, les deux fonctions sont gérées. Quelqu'un at-il une idée de pourquoi cela fonctionne et non avec addEventListener?
Cordialement Z
réponse mis à jour ... greetz – back2dos
Ainsi est-il pas encore de réponse à pourquoi votre exemple ne fonctionne pas? Problème de GC ou quelque chose. Je suis curieux à ce sujet, puisque j'utilise souvent un modèle similaire, même si je n'ai pas rencontré ce problème. – tylermac