3

故事: 我开发了一款游戏,我想使用目标操作系统的 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>    

感谢您的任何回复。如果您有任何问题,请告诉我。

4

1 回答 1

1

有人告诉我,今年早些时候,Chrome 被更改为禁止加载本地 Flash 文件。(我不明白为什么只有本地文件会带来安全风险,而基于 Web 的文件不会......)

在此处查看与此主题相关的我的问题的评论:Detect Chrome as browser associated with html files in Windows。其中一位提到本地闪存文件在 IE 上也可能存在问题。

我们决定永远不要在我们的 applications.xc 中使用本地 flash 文件

编辑:这是 Chrome 上的错误报告的链接:http ://code.google.com/p/chromium/issues/detail?id=140755 。这听起来不像一个漂亮的情况。

更新:在 Chrome 中尝试在 Techsmith 的 Camtasia 播放器中播放 MP4 时,我收到以下消息。这是对我上面描述的行为的确认。

Chome 消息声明功能被禁用

于 2012-10-22T23:43:00.517 回答