套件 | flash.media |
類別 | public final class StageWebView |
繼承 | StageWebView EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
StageWebView 類別提供簡單方法,在不支援 HTMLLoader 類別的裝置上顯示 HTML 內容。除了 StageWebView 類別本身的方法與屬性之外,此類別不提供 ActionScript 與 HTML 內容之間的互動。因此,(例如) 將無法在 ActionScript 與 JavaScript 之間傳送值或呼叫函數。
AIR 描述檔支援:所有桌上型電腦作業系統與行動裝置都支援此項功能,但 AIR for TV 裝置不支援。您可以使用 StageWebView.isSupported
屬性測試執行階段的支援狀況。如需有關跨多個描述檔之 API 支援的詳細資訊,請參閱 AIR 描述檔支援。
在行動與擴充行動描述檔的裝置上,StageWebView 類別會使用裝置作業系統所提供的系統網頁控制項。因此,可用的功能與顯示外觀可能因裝置而異。
在 Android 上,只有在應用程式描述器中包含 <application android:hardwareAccelerated="true"/>
的情況下,才支援內嵌 HTML5 視訊。
在桌上型電腦上 (在桌面與擴充桌面描述檔中),StageWebView 類別使用 Flash Player 外掛程式所提供的系統網頁控制項。可用的功能和顯示外觀與 HTMLLoader 類別相同 (但沒有 HTMLLoader 實體所提供 ActionScript 與 JavaScript 之間密切整合與指令碼橋接)。由於 HTMLLoader 類別使用內部 AIR WebKit 引擎,強烈建議不要同時使用 StageWebView 和 HTMLLoader 實體,因為它具有未定義的行為且可能會終止應用程式。
StageWebView 類別並非顯示物件,因此無法新增至 Flash 顯示清單。您必須改為使用 stage
屬性,將 StageWebView 物件直接附加至舞台來顯示。附加至舞台的 StageWebView 實體將顯示在任何 Flash 顯示物件的上方。您可以使用 viewPort
屬性,控制顯示區域的大小與位置。您無法控制不同 StageWebView 物件的深度順序。不建議重疊兩個實體。
當焦點位於 StageWebView 物件中的內容時,StageWebView 物件具有處理鍵盤輸入的優先機會。附加 StageWebView 物件的舞台會傳送未處理的任何鍵盤輸入。一般事件擷取/反昇循環不適用於此處,因為 StageWebView 實體並非顯示清單的一部分。
在 Android 3.0+ 中,應用程式必須在 AIR 應用程式描述器的 Android manifestAdditions 元素中啟用硬體加速,才能顯示 StageWebView 物件中的外掛程式內容。
詳細資訊
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
isHistoryBackEnabled : Boolean [唯讀]
報告瀏覽操作記錄中是否有上一頁。 | StageWebView | ||
isHistoryForwardEnabled : Boolean [唯讀]
報告瀏覽操作記錄中是否有下一頁。 | StageWebView | ||
isSupported : Boolean [靜態] [唯讀]
報告目前裝置是否支援 StageWebView 類別。 | StageWebView | ||
location : String [唯讀]
目前位置的 URL。 | StageWebView | ||
mediaPlaybackRequiresUserAction : Boolean
設定使用者是否必須執行手勢,才能播放媒體內容。 | StageWebView | ||
stage : Stage
顯示此 StageWebView 物件所在的舞台。 | StageWebView | ||
title : String [唯讀]
HTML 標題值。 | StageWebView | ||
viewPort : Rectangle
顯示此 StageWebView 物件所在舞台上的區域。 | StageWebView |
方法 | 定義自 | ||
---|---|---|---|
建立 StageWebView 物件。 | StageWebView | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
將焦點指派至此 StageWebView 物件內的內容。 | StageWebView | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
釋放此 StageWebView 物件。 | StageWebView | ||
繪製 StageWebView 檢視連接埠的點陣圖。 | StageWebView | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
瀏覽至瀏覽操作記錄中的上一頁。 | StageWebView | ||
瀏覽至瀏覽操作記錄中的下一頁。 | StageWebView | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
載入與顯示指定的 HTML 字串。 | StageWebView | ||
載入位於指定 URL 的頁面。 | StageWebView | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
重新載入目前頁面。 | StageWebView | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
停止目前的載入作業。 | StageWebView | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
發出訊號,表示 loadString() 或 loadURL() 方法所要求的最後一個載入作業已完成。 | StageWebView | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
發出訊號,表示發生錯誤。 | StageWebView | |||
當此 StageWebView 物件取得焦點時傳送。 | StageWebView | |||
當 StageWebView 失去焦點時傳送。 | StageWebView | |||
發出訊號,指出 StageWebView 物件的 location 屬性已變更。 | StageWebView | |||
發出訊號,表示 StageWebView 物件的 location 屬性即將變更。 | StageWebView |
isHistoryBackEnabled | 屬性 |
isHistoryForwardEnabled | 屬性 |
isSupported | 屬性 |
location | 屬性 |
mediaPlaybackRequiresUserAction | 屬性 |
mediaPlaybackRequiresUserAction:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 21.0 |
設定使用者是否必須執行手勢,才能播放媒體內容。針對 iOS,此屬性將不會實行,且只能透過 StageWebView()
建構函式達到 autoPlay 媒體。預設值為 True。
實作
public function get mediaPlaybackRequiresUserAction():Boolean
public function set mediaPlaybackRequiresUserAction(value:Boolean):void
stage | 屬性 |
title | 屬性 |
viewPort | 屬性 |
viewPort:Rectangle
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
顯示此 StageWebView 物件所在舞台上的區域。
實作
public function get viewPort():Rectangle
public function set viewPort(value:Rectangle):void
擲回值
RangeError — Rectangle 值無效。
|
StageWebView | () | 建構函式 |
public function StageWebView(useNative:Boolean = false, mediaPlaybackRequiresUserAction:Boolean = true)
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
建立 StageWebView 物件。
物件將維持隱藏,直到它附加至舞台並設定 viewPort
為止。
注意:儘管未被禁止,但是在某些內容中,當相同處理程序同時使用內嵌及系統 WebKit 時可能會發生失敗,因此,建議您在指定的應用程式中使用相同的 useNative 值來建構所有 StageWebViews。此外,由於 HTMLLoader 依賴內嵌的 WebKit,因此,使用 HTMLLoader 的應用程式只能以設為 false 的 useNative 來建構 StageWebViews。
參數useNative:Boolean (default = false ) — 當 useNative 為 false 時,內嵌於 AIR 的 WebKit 版本可以當做所建立 StageWebView 的來源使用。當 useNative 為 true 時,AIR 將會使用系統的預設網頁引擎。行動平台僅支援使用預設網頁引擎,因此,useNative 會在行動平台上遭到忽略。
| |
mediaPlaybackRequiresUserAction:Boolean (default = true ) — 預設值為 true。當 mediaPlaybackRequiresUserAction 為 true 時,WebView 需要使用者動作才會播放。如果為 false,WebView 內容將自動播放。
|
assignFocus | () | 方法 |
dispose | () | 方法 |
public function dispose():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
釋放此 StageWebView 物件。
呼叫 dispose()
為選擇性動作。若不要保留此 StageWebView 實體的參照,它將會進入記憶體回收作業。呼叫 dispose()
會使得記憶體回收更快發生 ,或是在更適合的時間發生。
drawViewPortToBitmapData | () | 方法 |
public function drawViewPortToBitmapData(bitmap:BitmapData):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.6 |
繪製 StageWebView 檢視連接埠的點陣圖。
擷取點陣圖並將舞台設為 null
,以便在 StageWebView 物件上方顯示內容。
注意:這個方法的行為不保證頁面會包含外掛程式內容 (例如內嵌的 PDF 和 SWF 檔案)。
參數
bitmap:BitmapData — 繪製 StageWebView 檢視區域可見部分的 BitmapData 物件。
|
擲回值
ArgumentError — 點陣圖的寛度或高度不同於檢視區域的寛度或高度。
| |
Error — 點陣圖為 null。
|
範例 ( 如何使用本範例 )
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.*; import flash.geom.Rectangle; import flash.media.StageWebView; import flash.net.*; import flash.text.TextField; public class stagewebview1 extends Sprite { public var webView:StageWebView = new StageWebView(); public var textGoogle:TextField=new TextField(); public var textFacebook:TextField=new TextField(); public function stagewebview() { textGoogle.htmlText="<b>Google</b>"; textGoogle.x=300; textGoogle.y=-80; addChild(textGoogle); textFacebook.htmlText="<b>Facebook</b>"; textFacebook.x=0; textFacebook.y=-80; addChild(textFacebook); textGoogle.addEventListener(MouseEvent.CLICK,goGoogle); textFacebook.addEventListener(MouseEvent.CLICK,goFaceBook); webView.stage = this.stage; webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); } public function goGoogle(e:Event):void { webView.loadURL("http://www.google.com"); webView.stage = null; webView.addEventListener(Event.COMPLETE,handleLoad); } public function goFaceBook(e:Event):void { webView.loadURL("http://www.facebook.com"); webView.stage = null; webView.addEventListener(Event.COMPLETE,handleLoad); } public function handleLoad(e:Event):void { var bitmapData:BitmapData = new BitmapData(webView.viewPort.width, webView.viewPort.height); webView.drawViewPortToBitmapData(bitmapData); var webViewBitmap:Bitmap=new Bitmap(bitmapData); addChild(webViewBitmap); } } }
historyBack | () | 方法 |
historyForward | () | 方法 |
loadString | () | 方法 |
public function loadString(text:String, mimeType:String = "text/html"):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
載入與顯示指定的 HTML 字串。
使用 loadString()
方法時,會將 location
報告為 "about:blank"。只有標準的 URI 配置可以用於 HTML 字串中的 URL。不允許 AIR URI 配置 "app:" 與 "app-storage:"。
HTML 內容無法載入本機資源,例如影像檔案。不允許 XMLHttpRequests。
僅支援 "text/html" 與 "application/xhtml+xml" MIME 類型。
參數
text:String — 要顯示的 HTML 字串或 XHTML 內容。
| |
mimeType:String (default = "text/html ") — 內容的 MIME 類型,為 "text/html" 或 "application/xhtml+xml"。
|
範例 ( 如何使用本範例 )
loadString()
方法載入 HTML 頁面。
var webView:StageWebView = new StageWebView(); webView.stage = this.stage; webView.viewPort = new Rectangle( 0, 0, stage.stageWidth, stage.stageHeight ); var htmlString:String = "<!DOCTYPE HTML>" + "<html>" + "<body>" + "<h1>Example</h1>" + "<p>King Phillip cut open five green snakes.</p>" + "</body>" + "</html>"; webView.loadString( htmlString, "text/html" );
loadURL | () | 方法 |
public function loadURL(url:String):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
載入位於指定 URL 的頁面。
URL 可以使用下列 URI 配置:http:、https:、file:、data: 以及 javascript:。使用 file: 配置載入的內容可載入其他本機資源。
參數
url:String |
範例 ( 如何使用本範例 )
loadURL()
方法載入網站。
注意:在 Android 上,您必須在您的 AIR 應用程式描述器中指定 INTERNET 權限,以載入遠端 URL。
var webView:StageWebView = new StageWebView(); webView.stage = this.stage; webView.viewPort = new Rectangle( 0, 0, stage.stageWidth, stage.stageHeight ); webView.loadURL( "http://www.example.com" );
reload | () | 方法 |
stop | () | 方法 |
complete | 事件 |
flash.events.Event
屬性 Event.type =
flash.events.Event.COMPLETE
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5 |
發出訊號,表示 loadString()
或 loadURL()
方法所要求的最後一個載入作業已完成。
Event.COMPLETE
常數會定義 complete
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 已完成載入的網路物件。 |
error | 事件 |
focusIn | 事件 |
focusOut | 事件 |
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
屬性即將變更。
只有經由 HTML 內容或 StageWebView 物件內執行的程式所起始的位置變更 (例如使用者按一下連結的時候),才會傳送 locationChanging 事件。根據預設,新位置將顯示在此 StageWebView 物件中。您可以呼叫事件物件的 preventDefault()
方法,以取消預設行為。例如,您可以使用 flash.net.navigateToURL()
函數,根據事件物件的 location
屬性,在系統瀏覽器中開啟頁面。
使用下列方法變更位置時,不會傳送 locationChanging 事件:
historyBack()
historyForward()
loadString()
loadURL()
reload()
LOCATION_CHANGING
常數會定義頁面位置變更之前所傳送 type
屬性 LocationChangeEvent 物件的值。
loadURL()
方法載入網站,並使用裝置「後退」及「搜尋」軟鍵來瀏覽記錄。
package { import flash.display.MovieClip; import flash.media.StageWebView; import flash.geom.Rectangle; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.desktop.NativeApplication; public class StageWebViewExample extends MovieClip{ private var webView:StageWebView = new StageWebView(); public function StageWebViewExample() { webView.stage = this.stage; webView.viewPort = new Rectangle( 0, 0, stage.stageWidth, stage.stageHeight ); webView.loadURL( "http://www.example.com" ); stage.addEventListener( KeyboardEvent.KEY_DOWN, onKey ); } private function onKey( event:KeyboardEvent ):void { if( event.keyCode == Keyboard.BACK && webView.isHistoryBackEnabled ) { trace("Back."); webView.historyBack(); event.preventDefault(); } if( event.keyCode == Keyboard.SEARCH && webView.isHistoryForwardEnabled ) { trace("Forward."); webView.historyForward(); } } } }
Tue Jun 12 2018, 03:47 PM Z