我的所有地面纹理都有一个图像,比如spritesheet但只是垂直的,它每次只给我第一块(草)。下面是加载和裁剪图像的代码:
for (int i = 0; i < Screen.tileset_ground.length; i++) {
URL imgUrl = getClass().getResource("tileset_ground.png");
Screen.tileset_ground[i] = getImage(imgUrl);
ImageFilter imgF = new CropImageFilter(0, 26 * i, 26, 26);
ImageProducer imgP = new FilteredImageSource(Screen.tileset_ground[i].getSource(), imgF);
Screen.tileset_ground[i] = createImage(imgP);
}
答案 0 :(得分:1)
首先,您需要将for循环中的前两行移到其外部。你只需要做一次这个步骤。
其次,你需要弄清楚你的tileset中有多少个tile,并且只重复那么多次。
那么也许是这样的?
URL imgUrl = getClass().getResource("tileset_ground.png");
tileset_image = getImage(imgUrl);
num_images = HOWEVER MANY IMAGES ARE IN THE TILESET
for (int i = 0; i < num_images; i++) {
ImageFilter imgF = new CropImageFilter(0, 26 * i, 26, 26);
ImageProducer imgP = new FilteredImageSource(tileset_image.getSource(), imgF);
Screen.tileset_ground[i] = createImage(imgP);
}