首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StageWebView闪存的白色显示

StageWebView闪存的白色显示
EN

Stack Overflow用户
提问于 2016-11-15 22:58:34
回答 1查看 1.1K关注 0票数 4

StageWebView闪存的白色显示

因此,我一直在使用Adobe动画创建一个通用的Air应用程序,该应用程序可以移植到多个平台,如Mac、Windows和iOS。

它使用StageWebView来显示嵌入在具有自己的自定义html5视频播放器的HTML页面上的视频,除了一件简单但烦人的事情之外,一切都运行良好。

每当我显示一个舞台网页视图,你会看到一个白色的闪光灯在页面显示之前。

现在,我最初认为这是一个检查URL加载完成或格式糟糕的HTML文档的问题,但情况似乎并非如此。

在尝试消除这个问题的几次尝试之后,我注意到的是,如果我使用嵌入式Air WebKit,而不是使用桌面设备上的本机WebKit,它就会消失。

(下面的代码)导致加载时出现白色闪存:

代码语言:javascript
复制
var webView:StageWebView = new StageWebView(true);

(下面的代码)这消除了问题,但我的HTML标签,如视频和进度,不支持嵌入式WebKit,不再正常工作。

代码语言:javascript
复制
var webView:StageWebView = new StageWebView();

有关Adobe设置的信息:

useNative:Boolean (default = false) --当useNative为false时,会使用嵌入在AIR中的WebKit版本作为创建StageWebView的源。当useNative为真时,AIR将使用系统的默认web引擎。移动平台只支持使用系统web引擎,因此useNative在移动平台上被忽略。

令人沮丧的是,我已经设置了一个侦听器来检查加载完成情况,但这并没有解决这个问题。因此,作为一种解决办法,我已经将显示的StageWebView隐藏在屏幕之外,然后将它的位置移到我希望它在延迟后出现的地方,这不是很好。

其他将其显示为像素大小的尝试会导致问题仍然存在。

代码语言:javascript
复制
/*  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,这可能会首先解决整个问题,但我怀疑这种情况很快就会发生。

部分固定

因此,当我最初加载舞台Web视图时,这个问题仍然存在,但在应用程序使用期间,我设法最小化了它的外观。

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

我在重置StageWebView时有点过头了,因为人们知道StageWebView中的音频即使是隐藏的也会继续播放。

代码语言:javascript
复制
/*  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;
}

我意识到我可以简单地隐藏StageWebView并加载一个空白页面,而它被隐藏在视图之外以停止任何音频播放。这很容易用一个简单的字符串加载到其中。

虽然有时我仍然会看到白色的闪光,它的发生是最小的。

EN

回答 1

Stack Overflow用户

发布于 2018-01-08 01:03:21

代码语言:javascript
复制
private var webView : StageWebView;

 webView  = new StageWebView( true );
 webView.stage = this.stage;
 webView.viewPort = new Rectangle( 0, 0, 1024, 768 );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40621238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档