죄송합니다.이 코드는 약간 있지만 여기서는 그다지 많지 않습니다. 이것은 이미지 (알파벳의 스프라이트 시트)를 읽고 각 개별 문자 인 더 작은 서브 이미지로 잘라내어야합니다. 키를 누르면 해당 문자가 화면에 표시되지만이 부분은 실제 하위 이미지를 만들기위한 것입니다.Java :이 스프라이트 시트 읽기 코드의 요점을 이해하지 못합니까?
http://i.imgur.com/4I4uX.png (이미지)
package typeandscreen;
(where the imports should be, i just cut them out to save space)
public class Font{
final int width = 78; //gives the dimensions of the image
final int height = 32;
final int rows = 4;
final int cols = 13;
BufferedImage letters[] = new BufferedImage[rows*cols]; //makes the array of
//subimages. rows*cols is
//the number of subimages
void test(){
try{
final BufferedImage totalImage = ImageIO.read(new File("ABCabcs.png"));
//loads the big image itself
이 다음 부분은 저를 혼란 것입니다. i와 j는 무엇을위한 것이며, 왜 그것을 더하거나 늘릴까요? 이 부분은 하위 이미지의 크기를 알아내는 것입니다. 행 x * cols 인 13x14일까요?
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
letters[(i * cols) + j] = totalImage.getSubimage(
j * width,
j * height,
width,
height
);
}
}
} catch(IOException e){
e.printStackTrace();
}
}
}
나는 내가하고있는 일을 얻지 못한다. 내가 여기서 무엇을 놓치고 있니?
다른 문자의 색인을 찾을 때마다 '행'과 '열'이 변경되어야한다는 의미입니까? 이후 나는 최종 int 행 = 4; final int cols = 13; j와 i를 항상 col과 행과 동일하게 만드는 for 루프 때문에 항상 "letters [(4 * 4) + 13]"이 아닐까요? – GlassZee
행과 열은 루프의 상한입니다. i와 j는 0에서 rows/cols로 정중하게 변경되므로 (i * cols) + j 표현식은 각 루프 반복에서 문자 배열의 다른 인덱스로 평가됩니다. –
좋아, 나는 루프가 작동하는 방법에 대해 혼란 스러웠다. 감사 – GlassZee