1

私は最近、Construct 2 で構築されたゲームをダウンロードしてローカルで実行できるモバイル アプリを構築する必要がありました。私が得た解決策は、ゲーム データとサウンドを別の方法で処理することです。そして、ここに私の解決策があります:

4

2 に答える 2

4

1-縮小オプションをオフにしてゲームをエクスポートします


2- コンストラクトがサウンドを処理する方法を変更するには、index.html を開いて直後に追加する必要があります。コード:

<div style="display:none;">
<script>
window.playAudioAux = function(url){
    var output = url.substr(0, url.lastIndexOf('.')) || url;
    var url1 = output+'.ogg';
    var url2 = output+'.mp3';
    var url3 = output+'.m4a';
    document.getElementById('myAudioogg').src = url1;
    document.getElementById('myAudiompeg').src = url2;
    document.getElementById('myAudiomp4').src = url3;
    document.getElementById('myAudio').src = url3;
    document.getElementById('myAudio').load();
    document.getElementById('myAudio').play();
}
</script>
<audio id="myAudio" controls>
  <source id="myAudioogg" src="" type="audio/ogg">
  <source id="myAudiompeg" src="" type="audio/mpeg">
  <source id="myAudiomp4" src="" type="audio/mp4">
    Your browser does not support the audio element.
</audio>
</div>

これにより、オーディオを実行する新しい方法が作成されます。次に、サウンドを呼び出すc2runtime.jsを変更する必要があるため、以下を見つけます。

function C2AudioInstance(buffer_, tag_)
{

そしてその直後に追加

playAudioAux(buffer_.src); return;

これにより、Construct の通常の呼び出しが停止し、index.html に追加したばかりの関数が呼び出されます。


3- ほとんどの (おそらくすべての) ブラウザは、ローカルからのリクエストをセキュリティ上の問題と見なすため、そのゲームのdata.jsを別の方法でロードし、コンテンツをコピーできるように開く必要があります。また、 c2runtime.js内で、requestProjectData 関数内の次のコードを見つけます。

xhr.open("GET", datajs_filename, true);
var supportsJsonResponse = false;

その後、次のコードを追加します。

self.loadProject(FULL_CONTENT_INSIDE_YOUR_DATA.JS); return;

これにより、ゲーム コンテンツが読み込まれ、data.js の読み込みリクエストがキャンセルされます。


4- index.html 内で、ゲームのローカルでの実行に関するアラートを次のようにコメントします。

//alert("Exported games won't work until you upload them. (When running on the file:/// protocol, browsers block many features from working for security reasons.)");

それだ!:D、Firefox、Android WebView などの内部で問題なく動作します。まだ実行されていないのは、セキュリティ上の理由から Chrome だけです...

この種の問題を抱えている人に役立つことを願っています。

于 2016-05-07T23:17:18.507 に答える