gpt4 book ai didi

Java:如何更快地绘制这些图像?

转载 作者:行者123 更新时间:2023-12-02 00:35:05 25 4
gpt4 key购买 nike

好吧,我正在制作一个游戏,用户在游戏中的角色后面移动图像(在我的代码中称为“ map ”),因此看起来角色正在移动。

程序运行时,性能会适度下降,并且背景图像(“ map ”)滞后并且并不总是重新绘制。

这是我的主类调用来绘制图片的一个类:

public graphics(int z,int s, int f)
{
x = z;
y = s;
d = f;
try {
map = ImageIO.read(new File("background.png"));
//br = ImageIO.read(new File("blackrectangle.jpg"));
s0 = ImageIO.read(new File("spriteshoot0.png"));
s10 = ImageIO.read(new File("spriteshoot10.png"));
s20 = ImageIO.read(new File("spriteshoot20.png"));
s30 = ImageIO.read(new File("spriteshoot30.png"));
s40 = ImageIO.read(new File("spriteshoot40.png"));
s50 = ImageIO.read(new File("spriteshoot50.png"));
s60 = ImageIO.read(new File("spriteshoot60.png"));
s70 = ImageIO.read(new File("spriteshoot70.png"));
s80 = ImageIO.read(new File("spriteshoot80.png"));
s90 = ImageIO.read(new File("spriteshoot90.png"));
s100 = ImageIO.read(new File("spriteshoot100.png"));
s110 = ImageIO.read(new File("spriteshoot110.png"));
s120 = ImageIO.read(new File("spriteshoot120.png"));
s130 = ImageIO.read(new File("spriteshoot130.png"));
} catch (IOException e) {}
}
public void moveZ(int a,int b)
{
xz+=a;
yz+=b;
}

public void move(int a,int b)
{
x+=a;
y+=b;
}

public void angle(int t)
{
q=t;

}



public void paintComponent(Graphics g) {

g.drawImage(map,x,y,this);

if (q==1)
g.drawImage(s0,599,340,null);

if (q==2)
g.drawImage(s10,599,340,null);

if (q==3)
g.drawImage(s20,599,340,null);

if (q==4)
g.drawImage(s30,599,340,null);

if (q==5)
g.drawImage(s40,599,340,null);

if (q==6)
g.drawImage(s50,599,340,null);

if (q==7)
g.drawImage(s60,599,340,null);

if (q==8)
g.drawImage(s70,599,340,null);

if (q==9)
g.drawImage(s80,599,340,null);

if (q==10)
g.drawImage(s90,599,340,null);

if (q==11)
g.drawImage(s100,599,340,null);

if (q==12)
g.drawImage(s110,599,340,null);

if (q==13)
g.drawImage(s120,599,340,null);

if (q==14)
g.drawImage(s130,599,340,null);
}}

所以我想知道如何更快地显示图像“ map ”或找到解决此性能问题的替代路线。

注意** 这段代码是作为我的主类中的对象创建的,并且每次执行时都不会从文件中读取 BufferedImages(据我所知)。另外,重绘();在我的程序中,每 16 毫秒调用一次方法(是的,我尝试增加该时间,但问题仍然存在)。以下是用于重绘框架的计时器片段:

TimerTask task = new TimerTask() {

    public void run()       {

if (onU)
g.move(0,3);

if (onL)
g.move(3,0);

if (onD)
g.move(0,-3);

if (onR)
g.move(-3,0);
//System.out.println(ze.getX(650,400,650,0,xZ,yZ));
//System.out.println(ze.getY(650,400,650,0,xZ,yZ));
if(onR||onL||onD||onU)
gameSurface.repaint();
}};

非常感谢任何帮助,谢谢。

最佳答案

如果您正在编写游戏,则应该使用游戏引擎。编写高性能游戏很困难,并且对屏幕上的所有内容进行强力重绘并不能解决问题。其他聪明人已经解决了这些问题,您可以利用他们积累的工作成果,而不是试图重新发明轮子。

我不是游戏引擎方面的专家,但谷歌上“java游戏引擎”的第一个点击是jmonkeyengine.com 。也许你应该尝试一下。

关于Java:如何更快地绘制这些图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8017835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com