更新到最新的AIR v3.8会导致从磁盘加载的SWFs出现故障

更新到最新的AIR v3.8会导致从磁盘加载的SWFs出现故障,air,adobe,flash,Air,Adobe,Flash,我们有一个现有的应用程序,如果我们的用户自动更新到AdobeAIR v3.8,就会导致从本地磁盘加载到HtmlLoader实例中的交互式SWF无法正常工作。鼠标光标卡在窗口的一角,不会移动。我已经将问题缩小到我们正在加载的HTML中的某些内容。如果wmode属性从“不透明”更改为“窗口”,则鼠标可以工作。如果如下图所示向左移动wmode=“不透明”,鼠标光标将不会移动 我们正在加载的主权财富基金已经由不同的人以不同的质量进行编码。为了保护我们的应用程序不受不同的编码实践的影响,我们通过使用一个H

我们有一个现有的应用程序,如果我们的用户自动更新到AdobeAIR v3.8,就会导致从本地磁盘加载到HtmlLoader实例中的交互式SWF无法正常工作。鼠标光标卡在窗口的一角,不会移动。我已经将问题缩小到我们正在加载的HTML中的某些内容。如果wmode属性从“不透明”更改为“窗口”,则鼠标可以工作。如果如下图所示向左移动wmode=“不透明”,鼠标光标将不会移动

我们正在加载的主权财富基金已经由不同的人以不同的质量进行编码。为了保护我们的应用程序不受不同的编码实践的影响,我们通过使用一个HTMLLoader实例来“沙箱”它们,该实例加载一个HTML文件,然后再加载SWF。这可以防止加载的SWF走向父应用程序(我们的AIR应用程序)并做一些不愉快的事情,比如乱动鼠标。这几年来一直运作良好。现在,这些主权财富基金无法正常工作

下面是我们用来设置HTMLLoader的代码,下面是HTML

` 导入core.abstract.icorfactory; 导入core.abstract.ui.IInteractiveRewardPlayer; 导入core.concrete.Instances

import domain.curriculum.Reward;

import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.html.HTMLLoader;
import flash.net.URLRequest;

import mx.containers.Canvas;
import mx.containers.VBox;
import mx.core.UIComponent;
import mx.logging.*;

public class InteractiveRewardContainer extends Canvas implements IInteractiveRewardPlayer
{       

    private static var _logger:ILogger = Log.getLogger("InteractiveRewardContainer");   
    private var _html:HTMLLoader;   
    public function InteractiveRewardContainer()
    {
        super();
    }

    public function addToDisplay(container:VBox):void
    {
        container.addChild(this);
    }

    public function startReward(reward:Reward, width:int, height:int):void
    {
        _html = new HTMLLoader();
        var bitmapHolder:UIComponent = new UIComponent();
        var mySprite:Sprite = new Sprite();

        var file:String = Instances.coreFactory.resourceLoader.returnHTMLRewardFileName(reward);
        _logger.info("File=" + file);
        var urlReq:URLRequest = new URLRequest(file);

        bitmapHolder.addChild(_html);
        _html.width = width;
        _html.height = height;
        _html.load(urlReq);
        mySprite.addChild(_html);
        bitmapHolder.addChild(mySprite);
        this.addChild(bitmapHolder);    

        this.width = width;
        this.height = height;
    }

    public function stopReward():void
    {   
        _html.loadString("<html></html>");
    }
}
导入domain.currency.Reward;
导入flash.display.DisplayObject;
导入flash.display.Sprite;
导入flash.events.MouseEvent;
导入flash.html.HTMLLoader;
导入flash.net.URLRequest;
导入mx.containers.Canvas;
导入mx.containers.VBox;
导入mx.core.ui组件;
导入mx.logging.*;
公共类InteractiveWardContainer扩展画布实现IIInteractiveRewardPlayer
{       
私有静态变量记录器:ILogger=Log.getLogger(“InteractiveRevwardContainer”);
私有变量html:HTMLLoader;
公共函数InteractiveReaderContainer()
{
超级();
}
公共函数addToDisplay(容器:VBox):无效
{
container.addChild(this);
}
公共功能起始(奖励:奖励,宽度:整数,高度:整数):无效
{
_html=新的HTMLLoader();
var bitmapHolder:UIComponent=newuicomponent();
var mySprite:Sprite=新Sprite();
var文件:String=Instances.coreFactory.resourceLoader.returnHTMLRewardFileName(奖励);
_logger.info(“文件=”+文件);
var urlReq:URLRequest=新的URLRequest(文件);
addChild(_html);
_html.width=宽度;
_html.height=高度;
_load(urlReq);
mySprite.addChild(_html);
bitmapHolder.addChild(mySprite);
此.addChild(位图持有者);
这个。宽度=宽度;
高度=高度;
}
公共函数stopReward():void
{   
_html.loadString(“”);
}
}
`

和HTML的一部分。请注意wmode属性。将其更改为“窗口”修复了鼠标问题,但随后出现了显示问题。

有什么办法可以解决这个问题吗?

在HTML中将wmode设置为“direct”可以解决鼠标的问题,并保持正确的显示