我在这场比赛中陷入困境,我试图制造。我尝试使用的tilemap有一个错误说明如下
Error 1: "Phaser.Tileset - image tile area is not an even multiple of tile size"
Error 2: "Uncaught TypeError: Cannot read property '2' of undefined"
Error 3: "Uncaught TypeError: Cannot read property 'type' of undefined"2
以下是我使用的代码的链接。 http://pastebin.com/Dv00KGii
答案 0 :(得分:2)
尝试在tilemap中嵌入tileset。对我来说,这解决了这个错误:Uncaught TypeError: Cannot read property '2' of undefined"
答案 1 :(得分:1)
在Tiled Map Editor中,您需要确保将使用的所有tileet图像都嵌入tilemap .tmx项目文件中。如果将任何tileset图像作为外部.tsx(而非嵌入式图像)包含在内,则当您尝试从Tiled Map Editor中导入导出的JSON文件时,它将在相位器中引发Uncaught TypeError: Cannot read property '2' of undefined"
错误。
如果您忘记了一开始就将其嵌入,这不是问题,因为您以后可以随时进行操作。编辑器带有一个有用的图标,可以轻松地做到这一点:
要查看是否有任何外部tileset会产生此错误,请检查导出的tilemap JSON文件是否包含对.tsx文件的引用。
答案 2 :(得分:0)
这也发生在我身上。我发现我加载的png图像是1280x720。
Phaser website上的示例说要像这样加载tilemap
map = game.add.tilemap('mario');
tilemap函数的文档是here。该函数采用其他参数,如图块大小。在我的情况下,默认的32x32无效,因为720/32 = 22.5
。这个数字必须是一个整数。所以我只是将我的图片裁剪为32*22 = 704
。然后Phaser能够使用默认的tilemap设置加载png。那么默认的32x32将起作用,否则您可以将高度设置更改为10,因为720可以被10整除。在这种情况下,Phaser不应该抛出错误。在我的情况下,我调整了我的图像大小,因为我使用的其他图块图像都是32x32,因此更容易保持一致。
另外,在创建tilemap json时,最好是tileheight
和tilewidth
是图像和设置的倍数。
答案 3 :(得分:-1)
Phaser报告的错误如下:
"图片图块区域不是图块尺寸的偶数倍"
所以,显然Phaser要求tileset图像的大小是你的tile大小的倍数。平铺本身不需要这个,但如果您使用Phaser,您应该确保tileset图像中没有额外的空间。