StageWebView AIR 移動…

StageWebView AIR 移動應用 瀏覽html

 

 

  最學搞AIR手機應用,想做瀏覽html的功能,找了些資料,覺得StageWebView的實現方法比較好用,所以收藏一下.

 

語言版本: ActionScript 3.0
運行時版本: AIR 2.5

StageWebView 類在舞臺視口中顯示 HTML 內容。

在不支持 HTMLLoader 類的設備上,StageWebView 類通過一種簡單方式來顯示 HTML 內容。該類不提供 ActionScript 和 HTML 內容之間的交互,除非通過 StageWebView 類自身的方法和屬性。例如,無法在 ActionScript 和 JavaScript 之間傳遞值或調用函數。

 

 

在設備上的移動和擴展的移動配置文件中,StageWebView 類使用設備操作系統提供的系統 Web 控件。因此,可用的屬性和呈現外觀可能因設備而異。在桌面計算機上(在桌面和擴展的桌面配置文件中),StageWebView 類使用內部 AIR WebKit 引擎。可用的功能和呈現外觀與 HTMLLoader 類相同(沒有由 HTMLLoader 實例提供的 ActionScript 和 JavaScript 之間的緊密集成和腳本橋接)。測試 StageWebView 類的 isSupported 屬性以確定當前設備是否支持該類。

StageWebView 類不是顯示對象,無法添加到 Flash 顯示列表。相反,您應通過使用 stage 屬性將 StageWebView 對象直接附加到舞臺來顯示該對象。附加到舞臺的 StageWebView 實例顯示在任何 Flash 顯示對象的前面。您使用 viewPort 屬性控制呈現區域的大小和位置。無法控制不同 StageWebView 對象的深度順序。不建議重疊兩個實例。

當 StageWebView 對象內的內容處於焦點時,StageWebView 對象首先有機會處理鍵盤輸入。StageWebView 對象所附加到的舞臺調度任何未處理的鍵盤輸入。由於 StageWebView 實例不是顯示列表的一部分,普通的事件捕獲/冒泡循環在此處不適用。

在 Android 3.0+ 中,應用程序必須在 AIR 應用程序描述符的 Android manifestAdditions 元素中啓用硬件加速,才能顯示 StageWebView 對象中的插件內容。

 

主要事件:

locationChange

事件
事件對象類型: flash.events.LocationChangeEvent
屬性 LocationChangeEvent.type = flash.events.LocationChangeEvent.LOCATION_CHANGE
語言版本: ActionScript 3.0
運行時版本: AIR 2.5

表示更改了 StageWebView 對象的 location 屬性。

此事件無法取消。

在每個位置更改後調度。

locationChanging

事件
事件對象類型: flash.events.LocationChangeEvent
屬性 LocationChangeEvent.type = flash.events.LocationChangeEvent.LOCATION_CHANGING
語言版本: ActionScript 3.0
運行時版本: AIR 2.5

表示 StageWebView 對象的 location 屬性將更改。

僅當通過 StageWebView 對象內部運行的 HTML 內容或代碼啓動位置更改時(例如用戶單擊鏈接時),才調度 locationChanging 事件。默認情況下,新位置在此 StageWebView 對象中顯示。您可以調用事件對象的 preventDefault() 方法取消默認行爲。例如,您可以使用 flash.net.navigateToURL() 函數在基於事件對象的 location 屬性的系統瀏覽器中打開頁面

當使用下列方法更改位置時,不會調度 locationChanging 事件。

  • historyBack()
  • historyForward()
  • loadString()
  • loadURL()
  • reload()
LOCATION_CHANGING 常量定義在頁面位置發生更改之前調度的 LocationChangeEvent 對象的 type 屬性的值。

 

 

 

例子:

 

在對應要顯示的地方用StageWebView就可以了,如我要在已個Group裏顯示瀏覽html,可以如下:

 

var mainGoodsInfoHtml_Group:Group = new Group();

var webView:StageWebView = new StageWebView();
    webView.stage = mainGoodsInfoHtml_Group.stage;
    webView.viewPort = new Rectangle( 0, 0, mainGoodsInfoHtml_Group.stage.stageWidth, mainGoodsInfoHtml_Group.stage.stageHeight );
    webView.loadURL("http://www.tmall.com/");

 

 

 

 

管理瀏覽歷史


開始瀏覽網頁後,已經訪問過的頁面都保存在瀏覽歷史裏。調用historyBack()方法,移動到保存在瀏覽歷史裏的上一個瀏覽的網頁,如果存在的話。例如,使用管理按鈕的鼠標事件監聽,調用下面的函數。如果存在上一個瀏覽的頁面,isHistoryBackEnabled屬性的值是true。

public function moveBack(event:MouseEvent):void
{
if(webView.isHistoryBackEnabled)
{
webView.historyBack();
}
else
{
trace("No pages in the browsing history.")
}
}

類似的,historyForward方法導航到瀏覽歷史裏的下一頁。如果瀏覽歷史裏存在下一頁,webView.isHistoryForwardEnabled屬性值爲true。

public function moveForward(event:MouseEvent):void
{
if(webView.isHistoryForwardEnabled)
{
webView.historyBack();
}
else
{
trace("No pages in the browsing history.")
}
}

處理StageWebView事件


當使用StageWebView對象時,會想要知道什麼時候完成加載新URL。監聽locationChange事件,當URL改變時做一些事情。下面的代碼給StageWebView對象添加事件監聽。當URL加載完成,監聽器捕捉到StageWebView派發的LocationChangeEvent.LOCATION_CHANGE事件。

webView.addEventListener(LocationChangeEvent.LOCATION_CHANGE,getUpdate);
public function getUpdate(event:LocationChangeEvent):void
{
trace("The location changed.");
}

事件LocationChangeEvent.LOCATION_CHANGING,意味着StageWebView定位要發生變化。調用事件派發者的preventDefault()方法來避免默認行爲。
在下面的代碼,當StageWebView定位正要改變時,派發LocationChangeEvent.LOCATION_CHANGING事件,並避免加載新URL。

webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING,getUpdate);
public function getUpdate(event LocationChangeEvent):void
{
event.preventDefault();
trace("The new URL is blocked.");
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章