包 | flash.media |
类 | public final class StageWebView |
继承 | StageWebView EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
在不支持 HTMLLoader 类的设备上,StageWebView 类通过一种简单方式来显示 HTML 内容。该类不提供 ActionScript 和 HTML 内容之间的交互,除非通过 StageWebView 类自身的方法和属性。例如,无法在 ActionScript 和 JavaScript 之间传递值或调用函数。
AIR 配置文件支持:所有桌面操作系统和移动设备均支持此功能,但 AIR for TV 设备不支持此功能。您可以使用 StageWebView.isSupported
属性,测试在运行时上是否支持此功能。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持。
在设备上的移动和扩展的移动配置文件中,StageWebView 类使用设备操作系统提供的系统 Web 控件。因此,可用的功能和呈现外观可能因设备而异。
在 Android 中,只有在应用程序描述符中包含 <application android:hardwareAccelerated="true"/>
,才支持内联 HTML5 视频。
在桌面计算机上(在桌面和扩展的桌面配置文件中),StageWebView 类使用 Flash Player 插件提供的系统 web 控件。可用的功能和呈现外观与 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 | 属性 |
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 — 矩形值无效。
|
StageWebView | () | 构造函数 |
public function StageWebView(useNative:Boolean = false, mediaPlaybackRequiresUserAction:Boolean = true)
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
创建一个 StageWebView 对象。
在将该对象附加到舞台并设置 viewPort
之前,该对象不可见。
注意:尽管不禁止同一过程既使用嵌入 WebKit,也使用系统 WebKit,但对于某些内容这可能会发生故障;因此,建议对 useNative 使用相同的值来构造给定应用程序中的所有 StageWebView。此外,由于 HTMLLoader 取决于嵌入的 WebKit,因此对于使用 HTMLLoader 的应用程序,构造 StageWebView 时仅应将 useNative 设置为 false。
参数useNative:Boolean (default = false ) — 如果 useNative 为 false,则会使用嵌入 AIR 中的一个 WebKit 版本作为创建的 StageWebView 的源。如果 useNative 为 true,则 AIR 将使用系统的默认 web 引擎。移动设备平台仅支持使用系统 web 引擎,因此在移动设备平台上会忽略 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 — 位图为空。
|
示例 ( 如何使用本示例 )
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”。在 HTML 字符串内的 URL 中只能使用标准 URI 方案。不允许使用 AIR URI 方案“app:”和“app-storage:”。
HTML 内容无法加载本地资源,例如图像文件。不允许使用 XMLHttpRequests。
仅支持“文本/html”和“应用程序/xhtml+xml”MIME 类型。
参数
text:String — 要显示的 HTML 或 XHTML 内容的字符串。
| |
mimeType:String (default = "text/html ") — 内容的 MIME 类型,“文本/html”或“应用程序/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
属性将更改。
仅当通过 StageWebView 对象内部运行的 HTML 内容或代码启动位置更改时(例如用户单击链接时),才调度 locationChanging 事件。默认情况下,新位置在此 StageWebView 对象中显示。您可以调用事件对象的 preventDefault()
方法取消默认行为。例如,您可以使用 flash.net.navigateToURL()
函数在基于事件对象的 location
属性的系统浏览器中打开页面
当使用下列方法更改位置时,不会调度 locationChanging 事件。
historyBack()
historyForward()
loadString()
loadURL()
reload()
LOCATION_CHANGING
常量定义在页面位置发生更改之前调度的 LocationChangeEvent 对象的 type
属性的值。
loadURL()
方法加载一个 Web 站点,并使用设备的“后退”和“搜索”软键进行历史记录导航。
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, 11:04 AM Z