javascript - 使用 Javascript/HTML5 和 EaselJS 管理游戏中不同级别/场景的最佳方式

标签 javascript html easeljs createjs

我想我可能正在寻找与此人在此线程中提出的问题相同的问题,但似乎尚未得到答复。我不会链接线程,因为它对阅读此线程 AFAIK 的任何人都没有用。

我的问题是,加载不同关卡/场景的最佳方式是什么。我特别指的是建立特定于场景的所有对象,然后在您进入不同场景时将它们从内存中清除。我希望一些对象能够保持持久性,就好像关卡/场景没有改变一样,而一些对象在不再使用关卡时被销毁。例如,您可能想要从菜单屏幕移动到第一级或选项屏幕。我不太确定什么时候加载纹理最好。我猜这取决于纹理有多大。

我实际上是在编写一个游戏引擎,所以这就是我要开始的地方。顺便说一句,我也很高兴知道如何使用它。我研究了this project的源代码.我的问题是我不太明白它是如何工作的。我特别关注这个功能。

  PlatformerGame.prototype.DownloadAllLevels = function () {
        // Searching where we are currently hosted
        var levelsUrl = window.location.href.replace('index.html', '') + "levels/";
        var that = this;

        for (var i = 0; i < numberOfLevels; i++) {
            try {
                var request = new XMLHttpRequest();
                request.open('GET', levelsUrl + i + ".txt", true);
                request.onreadystatechange = makeStoreCallback(i, request, that);
                request.send(null);
            }
            catch (e) {
                // Probably an access denied if you try to run from the file:// context
                // Loading the hard coded error level to have at least something to play with
                //console.log("Error in XHR. Are you offline?"); 
                if (!window.localStorage["platformer_level_0"]) {
                    window.localStorage["platformer_level_0"] = hardcodedErrorTextLevel;
                }
            }
        }

这是从外部 URL 加载的还是什么?级别是否使用 XML 文件定义?

谢谢大家

最佳答案

对级别使用简单表示(文本、json 等)。 通过读取文件加载它,最简单的方法是拥有一个相关文件(与游戏相同的根 URL)并确保将所有“可破坏”关卡数据隔离在同一个对象中。 如果数据在关卡中重复使用(如音效),您可以将其保留在关卡特定数据之外以避免清除它。 这是模型在范围方面的样子:

browser [
  gameengine [
    yourgame [
      player data (total score ...)
      common resources (sound effects, player graphics, ...)
      level1 specific data (will be unloaded when done)
    ]
  ]
]

要加载数据,您可以使用 PreloadJS。

关于卸载请阅读:Unloading Resources on HTML with JavaScript

关于javascript - 使用 Javascript/HTML5 和 EaselJS 管理游戏中不同级别/场景的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276678/

相关文章:

javascript - 如何在不单击“应用”按钮的情况下设置选择值

javascript - 强制用户使用 jquery datepicker

php - Wordpress php while循环按id返回页面

html - 使用 easeljs 复制对象

javascript - 使用PreloadJS加载图像并将其添加到CreateJS阶段

javascript - 将 Photoshop HSL 调整图层转换为颜色矩阵?

javascript - d3.js 条形图问题

javascript - 是否有充分的理由为 JavaScript 使用短文件名?

javascript - 以编程方式更改 img 标签的 src

html - 文字装饰 : none using table --having trouble