android - 解决方案 : Run game local (file:///) Construct 2

标签 android android-studio webview local construct-2

我最近不得不构建一个移动应用程序,可以下载使用 Construct 2 构建的游戏并在本地运行,我得到的解决方案是以不同的方式处理游戏数据和声音。这是我的解决方案:

最佳答案

1- 在未选中缩小选项的情况下导出游戏


2- 更改 Construct 处理声音的方式,为此我们需要打开 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...

希望对遇到此类问题的人有所帮助。

关于android - 解决方案 : Run game local (file:///) Construct 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094641/

相关文章:

android - 构建适用于室内建筑的 Android map 应用程序

填写输入类型后,Android 键盘显示 "Go"键而不是 "next"

android - 在 Android Studio 中用 C++ 编写应用程序?

android - 如何将图像作为base64字符串发送到android webview当前页面

android - 在android中的recyclerview中添加预加载 View

android - 如何检测 Android WebView 何时加载页面?

java - RecyclerView 适配器问题

java - 我希望外部链接在我的浏览器中打开

java - 即使编程为 MediaPlayer 也不会停止播放

android - Android 中是否先于 Gingerbread 提供了 BouncyCaSTLe?