我对java编程很新,我在如何制作这些对象时遇到了一些障碍。
以下是代码示例:
public static Sprite backwardNullHelm = new Sprite(16, 0, 0, SpriteSheet.armor);
public static Sprite backwardNullHelm_1 = new Sprite(16, 1, 0, SpriteSheet.armor);
public static Sprite backwardNullHelm_2 = new Sprite(16, 2, 0, SpriteSheet.armor);
public static Sprite forwardNullHelm = new Sprite(16, 0, 1, SpriteSheet.armor);
public static Sprite forwardNullHelm_1 = new Sprite(16, 1, 1, SpriteSheet.armor);
public static Sprite forwardNullHelm_2 = new Sprite(16, 2, 1, SpriteSheet.armor);
public static Sprite rightNullHelm = new Sprite(16, 0, 2, SpriteSheet.armor);
public static Sprite rightNullHelm_1 = new Sprite(16, 1, 2, SpriteSheet.armor);
public static Sprite rightNullHelm_2 = new Sprite(16, 2, 2, SpriteSheet.armor);
public static Sprite leftNullHelm = new Sprite(16, 0, 3, SpriteSheet.armor);
public static Sprite leftNullHelm_1 = new Sprite(16, 1, 3, SpriteSheet.armor);
public static Sprite leftNullHelm_2 = new Sprite(16, 2, 3, SpriteSheet.armor);
这就是我为角色的头饰宣布精灵的方式。 如有必要,这里是构造函数:
public Sprite(int size, int x, int y, SpriteSheet sheet)
我将它们存储在这样的数组中:
backwardHelmet[0] = Sprite.backwardNullHelm;
backwardHelmet[1] = Sprite.backwardNullHelm_1;
backwardHelmet[2] = Sprite.backwardNullHelm_2;
forwardHelmet[0] = Sprite.forwardNullHelm;
forwardHelmet[1] = Sprite.forwardNullHelm_1;
forwardHelmet[2] = Sprite.forwardNullHelm_2;
rightHelmet[0] = Sprite.rightNullHelm;
rightHelmet[1] = Sprite.rightNullHelm_1;
rightHelmet[2] = Sprite.rightNullHelm_2;
leftHelmet[0] = Sprite.leftNullHelm;
leftHelmet[1] = Sprite.leftNullHelm_1;
leftHelmet[2] = Sprite.leftNullHelm_2;
方向指的是角色面向的方向(自上而下的透视图),数字(在对象名称中)指的是动画状态。 无论如何我能够"标签"对象(即以某种方式附加一个数字)所以我可以使用循环将它们放入数组中?
答案 0 :(得分:3)
你的意思是这样的循环吗?
for (int i=0; i<3; i++){
backwardHelmet[i] = new Sprite(16, i, 0, SpriteSheet.armor);
forwardHelmet[i] = new Sprite(16, i, 1, SpriteSheet.armor);
rightHelmet[i] = new Sprite(16, i, 2, SpriteSheet.armor);
leftHelmet[i] = new Sprite(16, i, 3, SpriteSheet.armor);
}
你甚至可以为像backward=0, forward=1, right=2, left=3
这样的整数分配方向,并且有一个多维数组和一个双循环:
for (int i=0; i<3; i++){
for (int j=0; j<4; j++){
helmet[i][j] = new Sprite(16, i, j, SpriteSheet.armor);
}
}
答案 1 :(得分:0)
虽然@ AndreaDusza的答案可能会更好地满足您的需求,但如果一个阵列中的所有对象都不是破解者,您可以这样做:
Sprite[] sprites = new Sprite[12];
for( int i = 0 ; i!=12 ; i++ )
{
sprites[i] = new Sprite(16, i%3, i/3, SpriteSheet.armor);
}
这样: