我在使用Phaser制作的游戏中有以下代码:
game.add.sprite(response.Turret0.posx, response.Turret0.posy, "turret");
game.add.sprite(response.Turret1.posx, response.Turret1.posy, "turret");
game.add.sprite(response.Turret2.posx, response.Turret2.posy, "turret");
我想使用循环来运行上面的语句。但是,以下方法似乎不起作用:
for(int i=0;i<length;i++)
game.add.sprite(response.'Turret+i'.posx, response.Turret0.posy, "turret");
代码位于 AJAX 函数中,因此我必须保留在函数边界中。为什么这不起作用,我该如何解决它?
问题实际上在于使用连续 ID 命名变量(Turret0、Turret1 等)。这会将结构信息转换为命名约定,这当然不太方便使用。
相反,您应该在 AJAX 响应中返回一个转塔数组,并通过循环中的turrets[i]
访问它。
按照您当前的命名标准,我认为使用:
response['Turret'+i]
应该有效,但我同意按照上一个答案的建议从一开始就将 Turret 声明为数组将是一种更好的方法。