【问题标题】:Flex Air HTMLLoader blank pop up window when flash content is loaded加载 Flash 内容时 Flex Air HTMLLoader 空白弹出窗口
【发布时间】:2009-06-25 16:35:24
【问题描述】:

我有一个使用 HTMLLoader 加载外部内容的 flex Air 程序。现在由于某种原因,每当我加载一个包含任何 Flash 内容的页面时,都会在我的程序之外弹出一个空白系统窗口。它完全是空白的,全是白色的,带有最小、最大和关闭按钮。如果我关闭它,我加载的任何 Flash 内容都会停止工作。在我的一生中,我无法弄清楚发生了什么,控制台中没有消息,窗口也没有标题。

有人有什么想法吗?感谢您提供的任何帮助。这是我正在使用的代码:

private var webPage:HTMLLoader;


private function registerEvents():void
{
    this.addEventListener(gameLoadEvent.GAME_LOAD, gameLoad);
    //webPage = new HTMLLoader();

}

//function called back from Game Command to load correct game
private function gameLoad(event:Event):void
{
    var gameEvent:gameLoadEvent = event as gameLoadEvent;
    loadgame(gameEvent.url, gameEvent.variables);

}


private function loadgame(url:String, variableString:String):void
{
    DesktopModelLocator.getInstance().scaleX = 1;
    DesktopModelLocator.getInstance().scaleY = 1;

    //var url:String = "http://pro-us.sbt-corp.com/aspx/member/LaunchGame.aspx";
    var request:URLRequest = new URLRequest(url);
    //var variables:URLVariables = new URLVariables("gameNum=17&as=as1&t=demo&package=a&btnQuit=0");

  if(variableString != null && variableString != ""){
    var variables:URLVariables = new URLVariables(variableString);
    variables.exampleSessionId = new Date().getTime();
    variables.exampleUserLabel = "guest";
    request.data = variables;
  }

    webPage = HTMLLoader.createRootWindow(true, null, true, null);
    webPage.height = systemManager.stage.nativeWindow.height - 66;
    webPage.width = systemManager.stage.nativeWindow.width;
    webPage.load(request);
    webPage.navigateInSystemBrowser = false;

    flexBrowser.addChild(webPage);      
}

]]>
</mx:Script>


<mx:HTML id="flexBrowser" width="1366" height="658" backgroundAlpha="0.45" creationComplete="registerEvents();" x="0" y="0">
</mx:HTML>  

【问题讨论】:

    标签: apache-flex air popup


    【解决方案1】:

    您没有使用 html 组件的任何功能。照原样,它也可能是一个画布,因为您所做的只是将孩子添加到 flexBrowser,一个 DisplayObjectContainer。虽然我不会这样做,但您可以非常简单地设置 flexBrowser.htmlLoader.load(request);并摆脱所有网页内容。

    【讨论】:

      【解决方案2】:

      您的应用程序是否使用透明窗口?在这种情况下,air 不会在 HTMLLoader 中显示 flash 内容,请参阅http://bugs.adobe.com/jira/browse/SDK-15033

      一种解决方法是使用http://code.google.com/p/adobe-air-util/source/browse/trunk/src/net/tw/util/air/HTMLOverlay.as

      我必须进行一些更改才能使其与我们的应用程序良好配合。我向项目所有者发送了一封电子邮件以贡献更改,如果您仍在使用它,我可以将补丁发送给您。最重要的变化是 html 覆盖窗口在切换时确实落后于其他应用程序,即 alt-tab 或打开另一个应用程序。

      更新:我已将更改提交到上面的叠加层,请查看它,因为它也应该适合您。我知道这似乎是一个糟糕的解决方法,但在 adobe 解决问题之前似乎没有更好的办法。如果您确实看到更好的东西,请确保发布更新:)

      【讨论】:

        【解决方案3】:

        此问题已在 AIR 1.5.2 中修复:

        在 AIR 1.5.2 之前,嵌入在透明窗口中的 SWF 内容和 HTML 容器无法显示。在 AIR 1.5.2 中,可以使用某些 wmode 设置显示 SWF 内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-11
          • 1970-01-01
          • 1970-01-01
          • 2013-05-12
          • 2012-03-02
          • 2011-08-09
          • 2010-11-24
          相关资源
          最近更新 更多