我在 RPG Maker MV 中开发了一款游戏。这是一个 javascript 前端,它允许我开发 block /临时编程,然后由 RPG Maker MV 后端将其导出到 HTML5/.js 文件的 ANSI/UTF8 混合体中。换句话说,我对使用 javascript 进行编程一无所知,这可以帮助我按照上述方式调试问题。
最简单的描述: 在我的 HTML5 应用程序的 .js 文件从 ANSI 转换为 UTF8 BOM 后,如何加载此 plugins.js 文件?
问题: 一旦我的应用程序在 Visual Studio 2017(最新版本的所有内容)中使用 WinJS 或 Cordova 打包用于 UWP 目标,某个 .js 文件(我相信是 plugins.js)未被使用(调用?)使应用程序无法正常运行以其包装形式。我通过打包应用程序而不将 .js 文件转换为 UWP 的 UTF8 来缩小范围,它运行良好。一旦我将 .js 文件转换为 UTF8 并再次打包,RPG Maker MV 游戏后端的核心就可以工作,但我添加到它的额外插件无法工作。
与我谈论这个问题的每个人都回避它,因为他们不知道 RPG Maker MV 是什么或它是如何工作的。我不明白为什么,因为它仍然只是 Javascript,而且除了我之外的任何人只要花 10 分钟就可以进一步调试,因为你知道自己在做什么而我不知道。我正在寻求理解,但我在底层,自 5 月开始调试以来没有取得太大进展。
我在 RPG Maker MV 论坛、visual studio 社区上发布了这个,联系了 RPG Maker MV 支持(他们不支持 UWP),并试图在 codementor.io 上找人帮助我。我还在工作中四处询问,我们实际上有数百名软件开发人员,但这个问题并没有吸引广泛的受众。
如果你能帮助我,你会感谢我自己和至少 3 位评论我在 Windows 商店上发布的损坏游戏的人。你将成为一个时代的标志性英雄,就像我游戏中的英雄一样。好吧,实际上这是一个具有讽刺意味的英雄。
请问,一旦我的 HTML5 应用程序的 .js 文件从 ANSI 转换为 UTF8 BOM,我该如何加载这个 plugins.js 文件? // //主.js //
PluginManager.setup($plugins);
window.onload = function() {
SceneManager.run(Scene_Boot);
};
和index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="user-scalable=no">
<link rel="icon" href="icon/icon.png" type="image/png">
<link rel="apple-touch-icon" href="icon/icon.png">
<link rel="stylesheet" type="text/css" href="fonts/gamefont.css">
<title>Likely Story RPG</title>
</head>
<body style="background-color: black">
<script type="text/javascript" src="js/libs/pixi.js"></script>
<script type="text/javascript" src="js/libs/pixi-tilemap.js"></script>
<script type="text/javascript" src="js/libs/pixi-picture.js"></script>
<script type="text/javascript" src="js/libs/fpsmeter.js"></script>
<script type="text/javascript" src="js/libs/lz-string.js"></script>
<script type="text/javascript" src="js/libs/iphone-inline-video.browser.js"></script>
<script type="text/javascript" src="js/rpg_core.js"></script>
<script type="text/javascript" src="js/rpg_managers.js"></script>
<script type="text/javascript" src="js/rpg_objects.js"></script>
<script type="text/javascript" src="js/rpg_scenes.js"></script>
<script type="text/javascript" src="js/rpg_sprites.js"></script>
<script type="text/javascript" src="js/rpg_windows.js"></script>
<script type="text/javascript" src="js/plugins.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>
根据以下评论更新: 好的,我现在正在上传一个 zip 文件夹 (2.6 gb),其中包含您或任何人可能需要的所有内容。这完美地复制了这个问题,并且游戏代码的复杂性要低得多。告诉它不起作用的方法:在 visual studio 中调试时,应用程序在左下角有图片覆盖。用鼠标点击应该会弹出一个菜单。在打包的应用程序中,图片显示但不运行菜单事件。 1drv.ms/f/s!AhExycO0yDOZhsdmVSBkhw9t_HNn3w
更新:看起来这是一个非常相似的问题,没有解决方案:Grunt and UglifyJS in Windows app development - UTF8 problems
最佳答案
我解决了这个问题。
简单的回答,在文件 rpg_manager.js 中有一段代码,其中“pluginmanager”作为一个函数被调用。这使用标志 script.async = false;
将标志更改为 script.async = true;这就是让打包的运行时环境(即用于 UWP 应用程序的 IE)工作所需的一切。
较长的答案,我发现这个是通过在正确的地方和听说异步的结合,加上对函数可能出错的地方的不眠思考的结合。这也是由于在这里发现了一些关于异步的研究:https://www.html5rocks.com/en/tutorials/speed/script-loading/
我相信这解释了为什么 android 的构建没有出现问题,并且调试也没有问题,因为它是不同的运行时。
关于javascript - 一旦 .js 文件转换为 UTF8,HTML5/JS 应用程序不会调用 index.html 中列出的 .js 文件之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759578/