phaser.js - 在循环中加载图像导致"密钥在缓存中找不到"

时间:2017-12-13 16:24:44

标签: javascript phaser-framework

我试图从JSON文件中将动态创建的图像加载到我的phaser项目中。 数组中的对象都有键" name"相应的值为"框" +数字

我将它们加载到预加载器中,如下所示:

var j = 0;
for (i in boxArray){
    game.load.image(boxArray[j].name, 'collCreatorAssets/boxes/'+boxArray[j].name+'.png');
    j++;
}

并尝试在我的代码中使用它们,如下所示:

j = 0;
for (i in boxArray){
    var newBox = boxes.create(boxArray[j].xPos, boxArray[j].yPos, boxArray[j].name);
    newBox.body.immovable = true;
    newBox.destructable = boxArray[j].destructable;
    j++;
}

将数组记录到控制台,我得到了令人惊讶的坏消息。包含对象的数组工作正常。

并不奇怪,因为我从xPos和yPos得到的位置分别用数组中对象内的相应值检出。导致在游戏中正确放置图像对象。它只是没有加载图像。

在预加载功能中加载图像时,也会在服务器上找到图像,我得到的唯一错误就是开始游戏时:

Phaser.Cache.getImage: Key "box0" not found in Cache.

create函数的参数是

sprite.create(x,y,'key');

和load.image函数的参数是

game.load.image('key', 'path');

我已经测试过手动加载预加载器中的图像并使用循环在游戏中创建精灵并且它可以正常工作。

所以我可以将问题缩小到预载器,但我不知道我错过了什么。

1 个答案:

答案 0 :(得分:0)

发现了这个问题。我是个白痴。

循环超出了获取JSON文件的请求的成功函数。