0

我已经有一个名为

Image spriteImage;

稍后在代码中我说明它是什么

Image spriteImage = new Image("content/man.png");

此代码使我的 Slick2D 应用程序崩溃。和有什么区别

Image spriteImage = new Image("content/man.png");

spriteImage = new Image("content/man.png");

(实际上有效)

4

4 回答 4

3

如果“崩溃”的意思是“无法编译”,那么原因是,每当您Image spriteImage在范围内声明(或任何其他类型/名称组合)时,您都在定义一个新变量。如果您已经有类似的声明,那么它将无法编译,说明您已经重新声明了两次相同的变量。

该声明:

Image spriteImage = new Image("content/man.png");

声明了一个名为 的变量spriteImage,而语句:

spriteImage = new Image("content/man.png");

正在将 的值(spriteImage一个已经存在的变量)设置为new Image(...)

于 2013-10-07T20:57:04.753 回答
0

你重新声明一个变量。spriteImage 已经是一个图像,所以你不能将它声明为一个图像。另一种解决方案是只使用:

Image spriteImage = new Image("content/man.png");

并且不在此声明中声明它。

Image spriteImage;

这也是可以接受的,并且您不需要两次声明 spriteImage。

于 2013-10-07T20:59:46.017 回答
0

看起来您可能正在隐藏一个变量。

如果在您拥有的方法之外

Image spriteImage

然后在你做的方法里面

Image spriteImage = (...);

您正在分配一个局部变量spriteImage

如果你这样做

spriteImage = (...);

然后你分配先前声明的spriteImage(大概是一个实例变量)

当您仅分配本地实例时,您将实例 1 保留为null,我猜您尝试使用它并且有一个空指针导致 openGL 崩溃。

于 2013-10-07T20:58:20.223 回答
0

您已经声明了Image spriteImage但尚未对其进行初始化。

    spriteImage = new Image("content/man.png");

上面是初始化它,但是

    Image spriteImage = new Image("content/man.png");

正在声明一个局部 Image 变量,它隐藏了另一个变量。

于 2013-10-07T20:58:23.990 回答