[英]Adobe AIR - What is the proper method for using an EventListener on a newly created window?
我對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:參數類型必須為非null。在flash.events::EventDispatcher/removeEventListener()處”
我相信此錯誤與應用程序范圍有關,但也不精通JS范圍規則。 如果我注釋掉removeEventListener行,它似乎可以運行代碼; 但是,我不確定是否要以正確的方式進行所有這些操作。 我試圖在查詢中進行詳細說明,但是原始問題可以追溯到問題的標題。
該錯誤是由於缺少類(或者是名稱空間?)引起的
newHTMLLoader.removeEventListener(Event.CLOSE, arguments.callee);
...本來應該...
newHTMLLoader.removeEventListener(air.Event.CLOSE, arguments.callee);
我仍然不確定這是否是處理此類問題的推薦或適當方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.