Пустое всплывающее окно Flex Air HTMLLoader при загрузке флэш-содержимого - PullRequest
1 голос
/ 25 июня 2009

У меня есть программа flex Air, которая загружает внешний контент с помощью HTMLLoader. Теперь по какой-то причине, когда я загружаю страницу с флэш-содержимым, вне моей программы появляется пустое системное окно. Он полностью пустой, весь белый с кнопками min, max и close. Если я закрою его, загруженный флэш-контент перестанет работать. Я не могу понять, что происходит, и в консоли нет сообщений и заголовка окна.

У кого-нибудь есть идеи? Я ценю любую помощь, которую вы можете оказать. Вот код, который я использую:

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>  

Ответы [ 3 ]

0 голосов
/ 03 июля 2009

Использует ли ваше приложение прозрачное окно? В этом случае air не будет отображать флэш-контент в HTMLLoader, см. 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 не решит проблему. Если вы видите что-то лучшее, обязательно опубликуйте обновление:)

0 голосов
/ 25 февраля 2010

Эта проблема была исправлена ​​в AIR 1.5.2:

До версии AIR 1.5.2 содержимое SWF и контейнер HTML в прозрачном окне отображаться не могли. В AIR 1.5.2 содержимое SWF может отображаться с определенными настройками wmode.

0 голосов
/ 01 июля 2009

вы не используете ни одну из возможностей вашего html-компонента. Таким образом, это также может быть холст, поскольку все, что вы делаете, это добавляете addChild к flexBrowser, DisplayObjectContainer. Хотя я бы так не поступил, вы можете просто установить flexBrowser.htmlLoader.load (request); и избавиться от всего этого материала на веб-странице.

...