Actionscript 3 StageView Flash';它在显示时为白色 StageWebView闪光灯在显示时为白色

Actionscript 3 StageView Flash';它在显示时为白色 StageWebView闪光灯在显示时为白色,actionscript-3,flash,air,stagewebview,Actionscript 3,Flash,Air,Stagewebview,因此,我一直在使用Adobe Animate开发一个通用Air应用程序,该应用程序可以移植到多个平台,如Mac、Windows和iOS 它使用StageWebView显示嵌入HTML页面的视频,这些页面有自己的自定义html5视频播放器,除了一件简单但烦人的事情外,一切都很好 每当我显示Stage Web视图时,在页面显示之前,您都会看到一道白光 现在我原以为这是检查URL加载完成或HTML文档格式不正确的问题,但事实似乎并非如此 在多次尝试消除该问题后,我注意到,如果我使用嵌入式Air Web

因此,我一直在使用Adobe Animate开发一个通用Air应用程序,该应用程序可以移植到多个平台,如Mac、Windows和iOS

它使用StageWebView显示嵌入HTML页面的视频,这些页面有自己的自定义html5视频播放器,除了一件简单但烦人的事情外,一切都很好

每当我显示Stage Web视图时,在页面显示之前,您都会看到一道白光

现在我原以为这是检查URL加载完成或HTML文档格式不正确的问题,但事实似乎并非如此

在多次尝试消除该问题后,我注意到,如果我使用嵌入式Air WebKit而不是从桌面设备使用本机WebKit,问题确实消失了

(以下代码)在加载时导致白色闪烁:

var webView:StageWebView = new StageWebView(true);
(下面的代码)这解决了这个问题,但是我的HTML标记,如视频和进度,不受嵌入式WebKit的支持,不再正常工作

var webView:StageWebView = new StageWebView();
来自Adobe的有关设置的信息:

useNative:布尔值(默认值=false)-当useNative为false时,嵌入在AIR中的WebKit版本将用作 StageWebView已创建。当useNative为true时,AIR将使用 系统的默认web引擎。移动平台仅支持使用 系统web引擎,因此在移动平台上忽略useNative

令人沮丧的是,我设置了一个监听器来检查加载完成情况,但这并没有解决这个问题。因此,作为一种解决方法,我将显示的StageWebView隐藏在屏幕外,然后在延迟一段时间后将其位置移动到我想要的位置,这并不好

其他将其显示为小像素的尝试会在适当位置调整其大小,这仍然会导致问题

/*  Check for Stage Web View Errors */
webView.addEventListener(ErrorEvent.ERROR, onError);
function onError(e:ErrorEvent):void {
    trace("Stage Web View error: " + e);
}

/*  Function to not show Stage Web View until loaded.   */
function onCompleteHandler(e:Event):void {
    webView.assignFocus();
    // Delay the Stage Web View to fix white flash issue.
    setTimeout(callWebView,500);
    webView.removeEventListener(Event.COMPLETE,onCompleteHandler);
}

/*  Multi-Function Stage Web View Loader, Just add file path string to call */
function webviewFilePath(path:String):void {
    webView.stage = this.stage;
    // Prep filepath
    filePath = new File(new File(path).nativePath).url;
    // Load file path
    webView.loadURL(filePath);
    // Add listener for Complete URL Load then Show
    webView.addEventListener(Event.COMPLETE,onCompleteHandler);
}

/*  Function to call Stage Web View independantly so it can be delayed with a timer */
function callWebView() {
    webView.viewPort = new Rectangle(posX(viewX), posY(viewY), viewWidth, viewHeight);
}
任何关于如何缓解或解决问题的提示或提示都将非常有用

当然,如果Adobe真的更新了嵌入式Air WebKit,那么一开始就可能解决整个问题,但我怀疑这种情况是否会很快发生

部分修复 因此,当我最初加载Stage Web视图时,这个问题仍然存在,但我已经设法在应用程序使用期间最小化它的外观

问题的一个主要部分是如何重置StageWebView以准备加载新页面,或者何时关闭视图

我在重置StageWebView时有点过火,因为众所周知,StageWebView中的音频即使在隐藏的情况下也会继续播放

/*  Function to Reset Stage Web View    */
function resetWebView():void {
    webView.loadString("<!DOCTYPE HTML><html><body></body></html>");
    //webView.viewPort = new Rectangle(0, 0, 0, 0);
    webView.stage = null;
    //webView.viewPort = null;
}
/*重置后台Web视图的功能*/
函数resetWebView():void{
webView.loadString(“”);
//webView.viewPort=新矩形(0,0,0,0);
webView.stage=null;
//webView.viewPort=null;
}
我意识到我可以简单地隐藏StageWebView并加载一个空白页面,而它是隐藏的,以停止任何音频播放。这很容易通过加载一个简单的字符串来完成


<>虽然有时我会看到白色的闪光灯,但它的出现很小。

请考虑用简单的英语添加一个解释来提高你的答案质量,并描述你的代码是如何解决OP问题的。
private var webView : StageWebView;

 webView  = new StageWebView( true );
 webView.stage = this.stage;
 webView.viewPort = new Rectangle( 0, 0, 1024, 768 );