Я новичок в разработке AIR и только что начал серьезно создавать свое первое простое приложение. Я хотел бы открыть новое окно, чтобы запросить у пользователя желаемые настройки при первом запуске. При тестировании нового окна и обнаружении его закрытого состояния я сделал следующее (включая некоторый код jQuery):
Следующий код используется для открытия нового окна при запуске основного приложения (так как оно открывается).
$(document).ready(function(){
var options = new air.NativeWindowInitOptions();
options.type = air.NativeWindowType.UTILITY;
var windowBounds = new air.Rectangle(200,250,300,400);
//create the new window
newHTMLLoader = air.HTMLLoader.createRootWindow(true, options, true, windowBounds);
newHTMLLoader.load(new air.URLRequest("setup.html"));
newHTMLLoader.window.opener = window;
newHTMLLoader.window.nativeWindow.addEventListener(air.Event.CLOSE, handleNewSettings);
}
Приведенный ниже код находится сразу после закрывающей фигурной скобки функции jQuery document.ready. Его цель - обработать событие закрытия окна настроек. Если он закрыт без отправки - это все, что я здесь тестирую - я хочу, чтобы он удалил прослушиватель событий, как это предлагается в руководстве для улучшения памяти, и закрывал главное окно приложения (в настоящее время не отображается).
function handleNewSettings(event){
//remove the event handler from memory first...
newHTMLLoader.removeEventListener(Event.CLOSE, arguments.callee);
//this is my event handler code
alert('yay');
window.close();
}
После закрытия окна настроек я получаю сообщение об ошибке времени выполнения AIR:
Произошла ошибка ActionScript: «TypeError: Ошибка № 2007: тип параметра должен быть ненулевым. At flash.events::EventDispatcher/removeEventListener ()»
Я считаю, что эта ошибка связана с областью приложения, но я тоже не слишком разбираюсь в правилах области видимости JS. Если я закомментирую строку removeEventListener, кажется, что код запускается; однако я не уверен, правильно ли я все это делаю или нет. Я попытался уточнить свой запрос, но исходный вопрос восходит к названию вопроса.