我在使用下面的代码时遇到了一些问题:
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/