故事: 我开发了一款游戏,我想使用目标操作系统的 webview/嵌入式浏览器部署到许多平台。一次编写,多次部署;-)
游戏本身是使用 HTML5/CSS3 和 javascript 开发的,并且还为支持 Flash 的平台(如 Windows 和 MacOsX)添加了一点 Flash。flash 文件仅用于音频,因为 HTML5 音频标签可以操作不同的平台,并且与 flash 相比没有太多功能。在移动平台上,它将切换回音频标签。
无论如何,我已经编写了一个“编译器”,它可以压缩我的代码并将资源/资产的路径更改/映射到本地文件系统。这是为了能够部署使用 HTML/etc 创建的游戏或其他应用程序,而无需访问互联网并将其组合成一个包。所有 javascript 都被缩小并“嵌入”在 HTML 文件中,包括 CSS 和一些小图像。但这不能用 Flash/SWF 文件完成(我认为?)。
这是我的问题: 我已经在 Firefox、Safari、Opera、Chrome 和 Internet Explorer 9 等“真正的”桌面浏览器中测试了游戏的本地版本。Flash 可在除 Chrome 之外的所有浏览器中运行。
但是:当我将它加载到 IE9 的嵌入式版本(使用 TEmbeddedWB 的 Delphi 可执行文件)时,它不会加载 flash 文件。我找到了一些设置区域映射安全性的代码,但似乎不起作用:
var
sUrl : string;
sw : WideString;
.....
.....
sUrl:='file:///C:\mygame\mygame.html';
sw:=WideString( sUrl );
if( embeddedWB.SecurityManager.SetZoneMapping(URLZONE_LOCAL_MACHINE, PWideChar( @sw ),SZM_CREATE) = S_OK ) then
showMessage( 'OK' )
else showMessage( 'NOT SET' );
embeddedWB.Go( sUrl );
.....
出现一个带有“OK”的消息框并加载文档,但没有闪烁(没有声音)。
问题:出了什么问题,为什么它不起作用,有人知道如何解决这个问题吗?
供您参考:
- 我已经测试过 IE9 正在运行
- flash 文件使用 Security.allowDomain("*");
- 我为 SWF (crossdomain.xml) 创建了一个安全策略 xml 文件
跨域.xml:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all" />
<allow-access-from domain="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
感谢您的任何回复。如果您有任何问题,请告诉我。