2012年4月30日 星期一

StageWebView 與Web App 混合使用

Adobe AIR 目的是給開發者一個跨平台發佈, 我們可以好好利用這個優勢. 當中StageWebView 是一個值得關注的功能, 能混合於HTML 和Javascript 開發成Web App. 作者製作一個Web App, 包含以下三個HTML 功能:

PhotoSwipe
Video.js
krpano Panorama Viewer


在這個範例中, 我們會把這三個功能包裝於Adobe AIR 內, 並分別儲存於:
  • PhotoSwipe -  所有檔案儲存於html 資料夾中, 與安裝檔一同發佈給用戶
      (完全本地儲存) href="PhotoSwipe/index.html"
  • Video.js - 播放功能儲存於html 資料夾中, 播放時載入網上的影片
      (部分本地儲存) href="videojs/demo.html"
  • krpano - 直接跳到網上的範例
      (完全網上儲存) href="http://krpano.com/krpano.html?pano=panos/rom/marktplatz/marktplatz.xml"
發佈html 資料夾設定 (Included files)

資料夾index.html 的內容, 純粹以傳統HTML 方式運作, 可以超連結本地內容或外部網頁.
資料夾index.html 的內容

作者編寫一個名為AirView 類別, 作為StageWebView 與介面控制部分的連繫. 主要功能:
  • 當屏幕大小改變, 自動調整介面控制部分位置
    private function stageResizeHander(event:Event):void {
      var menuHeight:Number = 0;
      ...
      _webView.viewPort = new Rectangle(0, menuHeight, _stage.stageWidth, _stage.stageHeight - menuHeight);
    }
    
  • 載入HTML 的標題<title>
    private function webViewCompleteHandler(event:Event):void {
      ...
      _titleTxt.text = _webView.title;
      ...
    }
    
  • 處理返回事件
    private function backMouseDownHandler(event:MouseEvent):void {
      if(_backBtn.enabled)
        if (_webView.isHistoryBackEnabled)
          _webView.historyBack();
    }
    
  • 複製html 資料夾至用戶設備中  (作本地儲存)
    public static function copyFile(folderName:String, indexName:String, once:Boolean = true):String {
     var source:File = File.applicationDirectory.resolvePath(folderName);
     var destination:File = File.applicationStorageDirectory;
     if (!destination.resolvePath(indexName).exists || !once)
        source.copyTo(destination, true);
     return "file://" + destination.resolvePath(indexName).nativePath;
    }

介面分為兩部分:
  • 內容以StageWebView 顯示HTML.
  • 控制元件由Flash 負責, 因應個人喜好設計, 自由度十分高.


作者認為, 關於Adobe AIR 的StageWebView, 是一個製作Web Apps 的一個理想方式. 若我們配合Stage3D, 更可提升畫面上的特效 (例: 兩個HTML 之間的轉換效果).

對比jQuery Mobile, Sencha Touch 等框架更為彈性, 因為每一個html 獨立運作, 開發簡單方便. 設計師自由製作介面, 如同網頁製作一樣.

對比Titanium, Phone Gap 等框架, 包裝成Web Apps 不需安裝SDK, 沒有複雜的安裝與設定. 同時支援Web Apps 與高效能的遊戲開發.

若大家有興趣, 可以改良一下, 加入Stage3D 特效, 在iOS 及Andoird 發佈給用戶.
大家可以 [下載] 範例試試看.

小記: 若StageWebView 與HTML 產生互動, 可參考以下連結.
注意事項: 若發佈Android 版本, 請確定發佈設定給予INTERNET Permisssion, 以免外部連結失敗喔.


沒有留言: