javascript - phaser.io 预加载数据,然后预加载图像

标签 javascript phaser-framework

我在使用下面的代码时遇到了一些问题:

CardList.preload = function() 
{
    game.load.text('card_list', '/data/card_list.json');

    var card_list = JSON.parse(game.cache.getText("card_list"));

    // :ISSUE: This code never fires because card_list isn't populated until preload is complete...
    for(var i in card_list)
    {
        game.load.image('hero_card_' + i, 'images/hero_card_' + i + '.jpg');
        game.load.image('hero_tile_' + i, 'images/hero_tile_' + i + '.jpg');
    }

}

基本上,我尝试加载玩家拥有的卡牌列表(来自 JSON 文件),然后预加载图像。问题是,game.load.text() 不会立即触发并且不支持回调。

是否有不同的方法来解决这个问题?

最佳答案

Phaser 预加载函数通过在其中执行所有“game.load”调用并从中构建加载程序队列来工作。然后它启动加载程序运行 - 这就是它知道有多少文件要加载、还有多少等的方式。这也意味着您无法访问将要在预加载函数本身中加载的文件。

您有两个选择:您可以在不同的状态(即启动状态)中加载 card_list.json,然后您可以解析它并加载它在预加载器状态中列出的 Assets 。如果您查看 Project Templates 文件夹中的 Phaser 存储库,您将找到执行此操作的示例设置。

选项 2 是您的预加载函数仅加载 card_list(以及您知道可以安全加载的任何其他 Assets ),然后一旦加载,您就可以启动另一个运行的加载器来加载实际 Assets 。这里有一个例子:http://examples.phaser.io/_site/view_full.html?d=loader&f=load+events.js&t=load%20events

关于javascript - phaser.io 预加载数据,然后预加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25458928/

相关文章:

javascript - Angular4 的 http 请求问题

javascript - GetElementById(对象xraywrapper)内的getElementsByTagName?

javascript - Angular2 - 共享组件 Controller

javascript - 拼接后Javascript覆盖数组索引

javascript - 如何编译我的 TypeScript Phaser 项目,使其仅使用 Phaser.d.ts 引用路径找到 "Phaser"命名空间?

reactjs - Next.js( react )+ Phaser : ReferenceError: navigator is not defined

javascript - PHP 变量从一个页面转移到另一个页面

javascript - undefined 不是对象 firebase.auth.FacebookAuthProvider.credential

WordPress 页面编辑器中的 javascript 不起作用

JavaScript 函数原型(prototype)?