当我试图裁剪图片时,Java小程序崩溃
我一直在尝试把一张更大的图片切碎,并将其用作游戏的瓷砖。我让程序使用fillRect()来模拟图像。但是,当我替换fillRect代码时,它崩溃了。以下是我一直在使用的:当我试图裁剪图片时,Java小程序崩溃,java,applet,Java,Applet,我一直在尝试把一张更大的图片切碎,并将其用作游戏的瓷砖。我让程序使用fillRect()来模拟图像。但是,当我替换fillRect代码时,它崩溃了。以下是我一直在使用的: buffer.drawImage(section[i][j].getSectionImage(i, j), sectionSize * i + OFFSETx, sectionSize * j + OFFSETy, this); public class Section{ private static Im
buffer.drawImage(section[i][j].getSectionImage(i, j),
sectionSize * i + OFFSETx,
sectionSize * j + OFFSETy,
this);
public class Section{
private static ImageIcon ii;
private static Image mainImage;
private Image sectionImage;
public Section(){
if (ii == null){
ii = new ImageIcon(this.getClass().getResource("images/Mossy_rocks.png"));
mainImage = ii.getImage();
}
}
public Image getSectionImage(int x, int y){
sectionImage = createImage(new FilteredImageSource(mainImage.getSource(),
new CropImageFilter(1,1,20,20))); //test values
return sectionImage;
}
}
我尝试了对Section类使用“extends-JApplet/JFrame/JComponent”,但似乎没有任何帮助
编辑:我还想提一下,如果我只是从getSectionImage()返回mainImage,我会得到图像。我认为最大的问题是该函数的其余部分。。。但是我不确定,所以我包括了替换fillRect()时需要添加的所有内容。我找到了一种更好的方法来裁剪此图像。我是这样做的:
screenImage.drawImage(Image sprite,
int (x position on screen),
int (y position on screen),
int (x position on screen + width),
int (y position on screen + height),
int (x position from sprite),
int (y position from sprite),
int (x position from sprite + width),
int (y position from sprite + height),
null);
控制台有什么异常吗?它在哪一行崩溃?变量中的值是什么?对不起。我想我用错了术语。它只是挂着。没有错误。什么都没有。当我重新创建错误时,我注意到一些事情:只有在扩展Section类的情况下才能使用createImage()。这就是问题所在。若我用JApplet或JFrame扩展该节,并注释掉所有其他相关代码,它将停止工作。更糟糕的是,清理项目还不够。一旦它停止工作,我就无法更改代码并重试。。。我必须重新启动,然后再试一次。我没有答案,只是说这里有零检查,看看是否可以找到映像,或者是否有任何变量为空,最重要的是,这发生在构造函数内部!不好的。我会将这段代码移到另一个方法中,至少在尝试调用mainImage之前检查是否找到了映像。getSource()检查getResource()的结果,`if(null!=getClass().getResource(“images/…)){//found image}。最后,您应该记录重要事件,例如,是否找到映像,即使是System.out也比不登录好谢谢你的建议eon。我已经检查过是否可以找到该图像,但将其写入代码将是一个好主意。如果我只是返回mainImage,而不是使用sectionImage=createImage(blah),那么我就得到了一个正常工作的产品。当然,这是完整的雪碧表,而不仅仅是我想要的20x20部分。当然,正如我所说,扩展类本身似乎是个问题(如果我没有使用createImage(),我就不需要扩展类)。