一旦.JS文件转换为UTF8,HTML5/JS应用程序就不会调用index.html中列出的.JS文件之一



我在RPG Maker MV中开发了一个游戏。这是一个javascript前端,允许我开发块/抓图编程,然后由RPG Maker MV-后端导出到html5/.js文件的ANSI/UTF8混合中。换言之,我对用javascript编程一无所知,这将有助于我调试问题,因为上面已经解决了。

最简单的描述:一旦我的HTML5应用程序的.js文件从ANSI转换为UTF8BOM,我该如何加载这个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转换为UTF8BOM,我该如何加载这个plugins.js文件?////main.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

更新:看起来这是一个非常相似的问题,没有解决方案:Windows应用程序开发中的Grunt和UglifyJS-UTF8问题

我解决了这个问题。

简单的答案是,在文件rpg_manager.js中有一段代码,其中"pluginmanager"作为函数调用。这使用标志script.async=false;

将标志更改为script.async=true;是使打包的运行时环境(即UWP应用程序的IE)工作所需的全部时间。

更长的答案是,我发现这是因为我在正确的地方,听说了异步,再加上对函数可能出了问题的不眠不休的思考。这也是由于在这里发现了一些关于异步的研究:https://www.html5rocks.com/en/tutorials/speed/script-loading/

我相信这解释了为什么android的构建没有问题,调试也没有问题,因为它是一个不同的运行时。

将除plugins.js之外的所有脚本包含移到头中,这将使它们首先加载,然后您可以在主体中执行plugins.jss,这将使得它稍后加载。

<!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>
<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/main.js"></script>
</head>
<body style="background-color: black">
<script type="text/javascript" src="js/plugins.js"></script>
</body>
</html>

这将使插件成为最后一个加载的js,因为它在主体中加载,主体在头之后加载,这回答了您的问题。很高兴能帮忙。

您可以尝试<script>以下正确加载脚本的属性:

<!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 defer type="text/javascript" src="js/plugins.js"></script>
<script defer type="text/javascript" src="js/main.js"></script>
</body>
</html>

最新更新