Я не уверен, что именно здесь происходит, но выяснил, что причиной является URLLoader.close();
.
У меня есть простое приложение, в котором пользователь вводит информацию в текстовое поле, затем я отправляю эту информациюPHP скрипт и обратный вывод.После получения вывода вы можете нажать новую кнопку, которая сбрасывает приложение.Ошибка заключается в функции, которая выполняется после нажатия этой кнопки.
Если вы нажмете эту кнопку, чтобы сбросить приложение, оно сбрасывает все переменные и т. Д., Но тогда кажется, что мой метод addEventListener
не выполняется.
Вот функция сброса:
//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();
}
После этого мой goButton
больше не работает.
Если нажать goButton
, он должен выполнитьследующее:
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);
}
}
И, наконец, функция onComplete:
function onComplete(e:Event):void {
receivedData=e.target.data;
outputTextBox.text=receivedData;
resetButton.visible=true;
resetButton.addEventListener(MouseEvent.CLICK, clearApplication, false, 0, true);
}
Обратите внимание, что любые переменные, не объявленные в функциях, объявляются глобально.
Итак, янаткнулся на то, что если я удаляю myLoader.close();
из функции clearApplication
, то все работает гладко.Мой goButton не имеет проблем и выполняется должным образом, если заполнены все текстовые поля.
Я знаю, что нет необходимости, если в данный момент ничего не загружается, но он есть, поскольку я никогда не знаю, будет ли он зависатьи должен быть отменен.Почему myLoader.close();
может вызвать что-то подобное?
Редактировать: Извините, сделал несколько ошибок, пытаясь упростить мой код для примера.