gpt4 book ai didi

Java drawImage 在 Eclipse 中比编译时快得多

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:46 26 4
gpt4 key购买 nike

当我从 eclipse 运行我的程序时,它运行良好,CPU 负载很小。 JProfiler(从 Eclipse 中观察程序运行情况)表示,大部分时间都被碰撞检测和绘图占用了。当 JProfiler 观察编译后的 jar 运行时,97% 的 cpu 使用来自drawImage。它的运行速度是 eclipse 的两倍 - 三倍。

这是为什么?

这会加载一次以从 Sprite 表中获取图像(所有图像都是缓冲图像)

SpriteMan(Map xMap, Board xBoard)
{
mMap = xMap;
mBoard = xBoard;
try
{
bigImg = ImageIO.read(new File("sprites.PNG"));
background = ImageIO.read(new File("background.PNG"));
}
catch (IOException e)
{
System.err.println("Caught IOException: " + e.getMessage());
}

for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
sprites[i][j] = bigImg.getSubimage(i * width,j * height,width,height);

iSprites[i][j] = config.createCompatibleImage(width, height, Transparency.TRANSLUCENT);
//iSprites[i][j] = toImage(sprites[i][j]);

for(int x = 0; x<32; x++)
{
for(int y = 0; y<32; y++)
{
iSprites[i][j].setRGB(x, y, sprites[i][j].getRGB(x,y));
}
}

loadedImage+=1;

}
}

}

此后, Sprite 将被保存到其相应​​的对象中(也只调用一次)

BlockGround(Map xMap, int X, int Y)
{
super(xMap, X, Y);

mSprite = mMap.mBoard.mSpriteMan.sprites[0][0];
mCollidable = true;
mChar = 'G';
}

block 的绘制使用:

g2.drawImage(mSprite,null, x, y);

编辑-----太感谢了!程序现在正常运行(更新我的 JRE 后),虽然我似乎搞砸了一些东西,并且花了很多功夫才让 Eclipse 再次运行,但是嘿,它有效!

最佳答案

我最好的猜测是 eclipse 使用的 java 版本比您的系统默认设置使用的版本更稳定。如果没有一些代码就无法真正判断。

---编辑---
在命令提示符下使用“java -version”并将您的 Eclipse 项目设置为使用它。那么应该是一样的。

关于Java drawImage 在 Eclipse 中比编译时快得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778878/

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