我试图了解我做错了什么,但我找不到有什么问题。当我运行以下代码时,它返回
Exception in thread "main" java.lang.NullPointerException
at jeremy.engine.Animation.displayFrames(Animation.java:43)
at jeremy.engine.Animation.playNextFrame(Animation.java:54)
at jeremy.engine.test.draw(test.java:33)
at jeremy.engine.test.main(test.java:90)
此代码段存在问题
public static boolean displayFrames() {
if (frame<frames.length+1) {
Disp.drawTexturedBox(x, y, width, height, frames[frame]);
return true;
}
return false;
}
我正在尝试加载图片并将其显示为动画。 我的初始化代码
public static double x = 0;
public static double y = 0;
public static double width = Disp.resX;
public static double height = Disp.resY;
private static Texture frames[] = null;
答案 0 :(得分:1)
我猜你从未真正初始化frames[]
数组。当您尝试通过调用frames.length
来访问它时,它可能仍为null。
答案 1 :(得分:0)
看看这个功能:
public static boolean displayFrames() {
if (frame<frames.length+1) {
Disp.drawTexturedBox(x, y, width, height, frames[frame]);
return true;
}
return false;
}
问题似乎是此检查:frame<frames.length+1
数组中的最后一个索引位于frames.length - 1
,而不是frames.length + 1
。
所以这应该有效:
public static boolean displayFrames() {
if (frame < frames.length - 1) {
Disp.drawTexturedBox(x, y, width, height, frames[frame]);
return true;
}
return false;
}