如何解决在Java中创建BufferedImage数组时出错
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.IOException;
public class ImageLoader {
public static BufferedImage loadImage(String path)
{
try {
return ImageIO.read(ImageLoader.class.getResource(path));
} catch(IOException e) {
e.printStackTrace();
System.exit(1);
}
return null;
}
}
public class Assets {
BufferedImage BackgroungImage,PlayerSprite,Enemy1,Enemy2,Enemy3,Enemy4;
BufferedImage[] EnemySprites = new BufferedImage[4];
public static void init()
{
BackgroundImg = ImageLoader.loadImage("/Assets/Images/BG.jpg");
PlayerSprite = ImageLoader.loadImage("/Assets/Sprites/WaveRider.png");
Enemy1 = ImageLoader.loadImage("/Assets/Sprites/Enemy1.png");
Enemy2 = ImageLoader.loadImage("/Assets/Sprites/Enemy2.png");
Enemy3 = ImageLoader.loadImage("/Assets/Sprites/Enemy3.png");
Enemy4 = ImageLoader.loadImage("/Assets/Sprites/Enemy4.png");
EnemySprites = {Enemy1,Enemy4};
}
}
我一直在尝试使用上面的代码创建一个BufferedImage数组,但出现以下错误:我试图存储在数组中的所有变量都遇到了相同类型的错误。我无法跟踪代码中的错误。我尝试在声明时分配数组的值,但这也给了我同样的错误。
Assets.java:19: error: illegal start of expression
EnemySprites = {Enemy1,Enemy4};
^
Assets.java:19: error: not a statement
EnemySprites = {Enemy1,Enemy4};
^
Assets.java:19: error: ';' expected
EnemySprites = {Enemy1,Enemy4};
^
Assets.java:19: error: not a statement
EnemySprites = {Enemy1,Enemy4};
^
Assets.java:19: error: ';' expected
EnemySprites = {Enemy1,Enemy4};
^
^
解决方法
您的代码中有几个问题。
问题1:另外请注意,仅允许在定义内联使用 {“ literal”,“ array”,“ value”} 进行数组初始化,也就是说,当您定义数组时。
您将必须像new YourType[]{values here..};
那样对其进行初始化。
问题2:注意,所有这些变量:
BackgroungImage,PlayerSprite,Enemy1,Enemy2,Enemy3,Enemy4;
是 Instance(非静态)字段,您正尝试从静态上下文引用它们,而您不能作为实例成员属于实例,而静态成员属于类。
您可以执行以下任一操作:
- 创建资产的新实例并访问该实例的成员;
- 将字段定义为静态。
问题3:
我也将这称为问题:请不要使用 PascalCase 来命名您的类成员(嵌套类除外)。
,您为什么不尝试使用索引进行分配?
EnemySprites[0] = Enemy1;
..
..
EnemySprites[3] = Enemy4;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。