我们有一个现有的应用程序,如果我们的用户自动更新到Adobe AIR v3.8,它会导致从本地磁盘加载到HtmlLoader实例的交互式SWF无法正常运行。鼠标光标卡在窗口的一角,不会移动。我已将问题缩小到我们正在加载的HTML中。如果wmode属性从“opaque”更改为“window”,则鼠标可以正常工作。如果如下左图所示,wmode =“opaque”,鼠标光标将不会移动。
我们正在加载的SWF已由不同的人编码到不同程度的质量。为了保护我们的应用程序免受不同的编码实践,我们通过使用HTMLLoader实例来“沙箱化”它们,该实例加载HTML文件,该HTML文件又加载SWF。这可以防止加载的SWF走到父应用程序(我们的AIR应用程序)并做一些不愉快的事情,如弄乱鼠标。这已经好几年了。现在,这些SWF无法正常工作。
以下是我们用来设置HTMLLoader的代码,下面是HTML。
` import core.abstract.ICoreFactory; import core.abstract.ui.IInteractiveRewardPlayer; import 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>");
}
}
`
和HTML的一部分。请注意wmode属性。将其更改为“窗口”可以解决鼠标问题,但是我们遇到了显示问题。
<embed src="76381.swf" quality="high" bgcolor="#869ca7" id="RightClickDemo" width="100%" height="100%" name="Bicycle" align="middle" menu="false" play="true" loop="false" quality="high" wmode="opaque" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
我们可以做些什么来解决这个问题?
答案 0 :(得分:0)
在HTML中将wmode设置为“direct”,用鼠标修复了问题,并保持了正确的显示。