【发布时间】:2014-06-20 21:11:31
【问题描述】:
我正在制作一个为游戏加载精灵的函数,但我不太确定我知道该怎么做。我仍然在 javascript 和 OOP 上摸索,所以我有点迷失了。我需要通过它们所在的精灵表以及对应于精灵表中精灵位置的索引来选择精灵。我想用一个字母来引用精灵表,用一个数字来引用 XY 位置。像Tile("A", 132); 这样的 spritesheets 将是 512x512 像素,其中包含每个 32x32 像素大的 sprite,每张纸上总共有 256 个 sprite,并且有多个图纸。这是我目前所拥有的:
function Tileset(Spritesheet, Index){
this.Spritesheet=Spritesheet;
this.Index=Index;
this.SpritesheetList=["TilesetA.png","TilesetB.png","TilesetC.png"];
this.Tile=Image;
this.LoadTiles = function(){
for (sheet in SpritesheetList){
var dummyImage= new Image;
dummyImage.src=this.SpritesheetList[sheet];
SpritesheetList[sheet]=[];
for (var Y=0; Y<16; Y++){
for (var X=0; X<16; X++){
this.SpritesheetList[sheet][Y*16 + X]=dummyImage.getSubimage(X*32, Y*32, 32, 32);
};
};
};
return this.SpritesheetList[Spritesheet][Index];
};
return this.SpritesheetList[Spritesheet][Index];
};
【问题讨论】:
-
您误用了
for..in。SpritesheetList是一个数组,您应该使用常规的for循环。 -
另外你忘了声明
sheet,你的意思是this.SpritesheetList吗? -
实际上,我认为
for..in会解析数组的所有元素,直到它到达末尾。我在命名数组元素时做错了吗?
标签: javascript arrays multidimensional-array sprite