Java 如何有选择地重置阵列';s维度?
我有一个抽象类Java 如何有选择地重置阵列';s维度?,java,arrays,bufferedimage,Java,Arrays,Bufferedimage,我有一个抽象类Sprite,它在其构造函数中为单个Sprite创建一个数组。构造函数采用精灵表的路径、精灵表类型作为枚举以及单个精灵的宽度和高度。构造函数获取精灵表的路径,将其加载到BuffereImage中,并从映像中获取单个精灵以将其加载到数组中。下面是课堂: package exosoft.Zerfall; public abstract class Sprite extends Main { BufferedImage spriteSheet = null; Buffe
Sprite
,它在其构造函数中为单个Sprite创建一个数组。构造函数采用精灵表的路径、精灵表类型作为枚举以及单个精灵的宽度和高度。构造函数获取精灵表的路径,将其加载到BuffereImage中,并从映像中获取单个精灵以将其加载到数组中。下面是课堂:
package exosoft.Zerfall;
public abstract class Sprite extends Main {
BufferedImage spriteSheet = null;
BufferedImage[] sprites;
int spriteWidth = 0;
int spriteHeight = 0;
public enum SheetType {
SINGLE,
HORIZONTAL,
VERTICAL,
RECTANGULAR
}
public Sprite(SheetType type, String sheetPath, int spriteWidth, int spriteHeight) {
try {
spriteSheet = ImageIO.read(new File(sheetPath));
} catch (IOException e) {
e.printStackTrace();
}
switch(type) {
case HORIZONTAL:
sprites = new BufferedImage[spriteSheet.getWidth() / spriteWidth];
for (int i = 0; i < spriteSheet.getWidth() / spriteWidth; i++) {
sprites[i] = spriteSheet.getSubimage(i * spriteWidth, 0, spriteWidth, spriteHeight);
}
break;
case RECTANGULAR:
break;
case VERTICAL:
sprites = new BufferedImage[spriteSheet.getHeight() / spriteHeight];
for (int i = 0; i < spriteSheet.getHeight() / spriteHeight; i++) {
sprites[i] = spriteSheet.getSubimage(0, i * spriteHeight, spriteWidth, spriteHeight);
}
break;
default:
break;
}
}
}
目标是最终得到一个名为sprites
的数组,其中包含各个sprites,并根据需要提供尺寸。这有可能吗?谢谢。您要做的是:
BufferedImage[][] sprites=null;
case 0-dimension: sprites=new BufferedImage[1][1];
case 1-dimension: sprites=new BufferedImage[n][1]
case 2-dimension: sprites=new BufferedImage[n][m]
然后
不,这不可能完全像你上面所做的那样。您的
精灵
成员变量必须是普通变量或数组。为什么不总是使用一个二维数组,对你不关心的维度使用1呢?它总是有效的。这确实有效,但我的目标是根据需要消除不必要的维度。你是在暗示这是不可能的吗?是的,它不可能有与无量纲和数组相同的变量-其他可能的解决方案是创建一个类,但你必须再次指定dimensionalityHmm。。。我觉得这应该是可能的,但哦,我想,我必须处理它。谢谢你的回答!
BufferedImage[][] sprites=null;
case 0-dimension: sprites=new BufferedImage[1][1];
case 1-dimension: sprites=new BufferedImage[n][1]
case 2-dimension: sprites=new BufferedImage[n][m]
case 0-dimension: sprites[0][0]=new BufferedImage(....);
case 1-dimension: for(i) sprites[i][0]=new BufferedImage()
case 2-dimension: for(i) for(j) sprites[i][j]=new BufferedImage()