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

Javascript phaser.io预加载数据,然后预加载图像,javascript,phaser-framework,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 p

我在以下代码中遇到一些问题:

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 preload函数通过执行其中的所有“game.load”调用并从中构建加载器队列来工作。然后它启动加载程序运行-这就是它如何知道有多少文件要加载,还有多少文件要加载,等等。这也意味着你不能在预加载函数本身中访问即将加载的文件

您有两种选择:您可以以不同的状态(即启动状态)加载card_list.json,然后可以解析它并以预加载状态加载它列出的资产。如果查看项目模板文件夹中的Phaser存储库,您会发现一个示例设置


选项2是您的预加载功能只加载卡片列表(以及您知道可以在此处安全加载的任何其他资产),然后加载后,您可以启动另一个加载实际资产的加载程序。这里有一个例子:

谢谢你提供的信息。我最终实现了选项2,但是关于它如何工作的背景知识很有帮助!