2009年3月27日 星期五

[FLEX]AIR兩個方法可以幫助你檢測網絡連接狀態

原文在這裡

AIR允許你創建在線或離線狀態下的應用,比如,你打算創建一個AIR工具來管理你的博客,那麼你可能需要隨時都可以寫文章,而不用理睬網絡是在線 還是離線。要做到這一點,你的應用就要具備檢測網絡狀態的能力,如果網絡處於在線狀態,就可以立刻發佈你的文章到博客上,如果是離線狀態,可以先保存文章 的內容(可以使用文件存儲或SQLite數據庫)。

接下來,你將創建一個簡單的AIR應用,這個應用擁有一個窗體,窗體內有三個元件:一個搜索的輸入框,一個提交按鈕,和一個顯示網絡狀態的圖片。如 果一個用戶在輸入框中敲入了一些文字並點擊了搜索按鈕,這個應用將會打開你的瀏覽器並自動在Google進行檢索,當然,如果你不能連接到互聯網,搜索的 按鈕是被禁用的。

AIR有兩個方法可以幫助你檢測網絡連接狀態,URLMonitor [ Flex | Javascript ] 和SocketMonitor [ Flex | Javascript ]。這兩個類都繼承自ServiceMonitor Class [ Flex | Javascript ]。要檢測你的網絡狀態你只需要遵循以下步驟即可:

1.建立一個你想要監測的URLRequest對象,你可以設置它的模式為「HEAD」來避免網頁下載完畢才開始監測狀態。
2.建立一個URLMonitor對象並指定到你要監測的URL上去。
3.為URLMonitor添加一個事件******來監測StatusEvent.STATUS事件並創建一個函數來接受事件。
4.設置如何開始你的URLMonitor監測。

如果對上面的內容不太明白,也不用擔心,在下面的代碼中你將看到詳細的說明,完整的示例文件在最後的下載文檔中。

開始編寫示例

在這個示例中,你要創建一個初始化的函數,用來創建你的URLRequest對象和URLMonitor對象。如果你使用Flex,那麼這個函數應 該綁定到CreationComplete事件上,如果是HTML/JavaScript,你需要把這個函數指定給Body的Onload事件。

Flex

Actionscript:

  1. import air.net.URLMonitor;

  2. import flash.net.navigateToURL;

  3. import flash.net.URLRequest;

  4. // DEFINE The Variable that will hold the URLMonitor

  5. private var monitor:URLMonitor;

  6. private function init():void {

  7. // URLRequest that the Monitor Will Check

  8. var url:URLRequest = new URLRequest(「http://www.davidtucker.net/index.php」);

  9. // Checks Only the Headers - Not the Full Page

  10. url.method = 「HEAD」;

  11. // Create the URL Monitor and Pass it the URLRequest

  12. monitor = new URLMonitor(url);

  13. // Set the Interval (in ms) - 3000 = 3 Seconds

  14. monitor.pollInterval = 3000;

  15. // Create the Event Listener that Will Be Fired When Connection Changes

  16. monitor.addEventListener(StatusEvent.STATUS,on_connection);

  17. // Start the URLMonitor

  18. monitor.start();

  19. }

HTML/Javascript

JavaScript:

  1. var monitor;

  2. function onLoad() {

  3. // URLRequest that the Monitor Will Check

  4. var request = new air.URLRequest( 「http://www.davidtucker.net/index.php」 );

  5. // Checks Only the Headers - Not the Full Page

  6. request.method = 「HEAD」;

  7. // Create the URL Monitor and Pass it the URLRequest

  8. monitor = new air.URLMonitor( request );

  9. // Create the Event Listener that Will Be Fired When Connection Changes

  10. monitor.addEventListener( air.StatusEvent.STATUS, doStatus );

  11. // Start the URLMonitor

  12. monitor.start();

  13. }

你可以發現,這兩者並沒有什麼區別,甚至在JavaScript中調用AIR的函數比在Flex中更簡單。

注意:如果你要在JavaScript中使用這個函數,必須確認你引入了AIRAliases.js和servicemonitor.swf這兩個 文件。如果缺少它們,這個函數將無法工作。你的函數可以在AIRAliases.js之外。在缺少servicemonitor.swf的情況下你將不能 使用URLMonitor。

【下列文章您可能也有興趣】

沒有留言: