Je ne suis pas sûr exactement ce qui se passe ici, mais j'ai compris que URLLoader.close();
est la cause.Dans AS3, URLLoader.close(); causer des problèmes si rien n'est chargé?
J'ai une application simple par laquelle un utilisateur entre des informations dans une zone de texte, puis j'envoie cette information à un script PHP et retourne la sortie. Une fois la sortie reçue, vous pouvez cliquer sur un nouveau bouton qui réinitialise l'application. L'erreur réside dans la fonction qui s'exécute après avoir cliqué sur ce bouton.
Si vous cliquez sur ce bouton pour réinitialiser l'application, il réinitialise toutes les variables, etc., mais il semble que ma méthode addEventListener
ne s'exécute pas.
Voici la fonction de remise à zéro:
//Reset function if the Reset button is pressed
function clearApplication(e:MouseEvent):void {
receivedData="";
data1TextBox.text="";
data2TextBox.text="";
resetButton.visible=false;
resetButton.removeEventListener(MouseEvent.CLICK, clearApplication, false);
goButton.visible=true;
goButton.addEventListener(MouseEvent.CLICK, getData, false, 0, true);
myLoader.close();
}
Après cette exécute, mon goButton
ne fonctionne plus.
Si le goButton
est cliqué, il doit exécuter les éléments suivants:
function getData(e:MouseEvent):void {
if (data1TextBox.text!=""&&data2TextBox.text!="") {
goButton.removeEventListener(MouseEvent.CLICK, getData, false);
goButton.visible=false;
postVars = new URLVariables();
postVars.data1=data1TextBox.text;
postVars.data2=data2TextBox.text;
myRequest=new URLRequest("URL");
myRequest.method=URLRequestMethod.POST;
myRequest.data=postVars;
myLoader.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
myLoader.load(myRequest);
}
}
Et enfin, la fonction onComplete:
function onComplete(e:Event):void {
receivedData=e.target.data;
outputTextBox.text=receivedData;
resetButton.visible=true;
resetButton.addEventListener(MouseEvent.CLICK, clearApplication, false, 0, true);
}
Notez que toutes les variables non déclarées dans les fonctions sont déclarées globalement.
Donc, je suis tombé sur le fait que si je supprime myLoader.close();
de la fonction clearApplication
alors tout fonctionne bien. Mon goButton n'a pas de problèmes et s'exécute comme prévu si tous les champs de texte sont remplis.
Je sais que ce n'est pas nécessaire si rien n'est actuellement chargé, mais il est là car je ne sais jamais s'il va se bloquer et a besoin être annulé. Pourquoi myLoader.close();
provoquer quelque chose comme cela se produire? Editer: Désolé, j'ai fait quelques erreurs en essayant de simplifier mon code pour l'exemple suivant.
Aw ... Je ne peux pas croire que j'ai raté ça! C'est exactement là que j'ai trouvé la méthode close() en premier lieu. Je dois être plus prudent. Et merci, je n'avais pas réalisé qu'il y avait un joueur de débogage mais je pensais qu'il me manquait définitivement quelque chose! – Structure