ストーリー: ターゲット OS 用の webview/組み込みブラウザーを使用して、多くのプラットフォームにデプロイしたいゲームを開発しています。一度書いて、何度もデプロイしてください;-)
ゲーム自体は、HTML5/CSS3 と JavaScript を使用して開発されており、Windows や MacOsX などのフラッシュをサポートするプラットフォーム用に少しフラッシュを使用しています。HTML5 オーディオ タグはさまざまなプラットフォームで動作する可能性があり、フラッシュに比べて多くの機能がないため、フラッシュ ファイルはオーディオのみに使用されます。モバイル プラットフォームでは、オーディオ タグに戻ります。
とにかく、コードを圧縮し、リソース/アセットのパスをローカルファイルシステムに変更/マップできる「コンパイラ」を作成しました。これは、インターネットにアクセスする必要なく、HTML/etc で作成されたゲームやその他のアプリを展開し、それらを単一のパッケージに結合できるようにするためです。すべての JavaScript は縮小され、CSS といくつかの小さな画像を含む HTML ファイルに「埋め込まれます」。しかし、これは Flash/SWF ファイルでは実行できません (と思いますか?)。
これは私の質問です 。Firefox、Safari、Opera、Chrome、Internet Explorer 9 などの「実際の」デスクトップ ブラウザでゲームのローカル バージョンをテストしました。Flash は、Chrome を除くすべてのブラウザで動作します。
しかし、IE9の組み込みバージョン(TEmbeddedWBを使用したDelphi実行可能ファイル)にロードすると、フラッシュファイルがロードされません。ゾーン マッピング セキュリティを設定するコードをいくつか見つけましたが、機能していないようです。
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が実行されていることをテストしました
- フラッシュ ファイルは Security.allowDomain( "*" ); を使用します。
- SWF 用のセキュリティ ポリシー xml ファイル (crossdomain.xml) を作成しました。
crossdomain.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>
返信ありがとうございます。ご不明な点がございましたら、お気軽にお問い合わせください。