- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我从 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/
我使用缓冲方法更新 Canvas ,问题是当我在缓冲 Canvas 中绘制图像并将其应用于真实 Canvas 时,真实 Canvas 上没有图像。但我可以将任何其他东西应用到真正的 Canvas 上。
好的,我正在使用 JavaScript Canvas 元素等创建一个游戏。我已经能够加载大量图像,但在选定的少数图像上,JavaScript 会回复错误,例如 Uncaught TypeError:
我的 Canvas 有一个简单的绘制图像,但它不会显示在第一帧上。 这让我发疯,我不知道为什么它不会这样做!! 这是我的脚本: img = new Image(); img.src = 'images
我正在尝试在我的代码上调用 DrawImage(),我正在遵循本教程 Jetpack Tutorial , 但我收到此错误: Unresolved reference: DrawImage 我尝试在
我目前正在尝试将图像打印到屏幕上,以便准备创建游戏。我可以单独显示图像,但前提是该图像是在 paintComponents() 类中实例化的。当然,我不想每帧都重新实例化整个板,但似乎无法让它工作。我
我正在尝试使用drawImage()方法获取要在屏幕上绘制的.jpg图像,但它不会绘制。这是代码: public void paint(Graphics g) { Image imag
在我的程序中,我有以下代码: package io.github.AdmiralSbs.DiceWars; import javax.imageio.ImageIO; import javax.swi
这基本上就是我的代码的工作方式 class Main extends JFrame implements Runnable { public Main() { //init ever
几天来,我一直在努力弄清楚为什么我的九层代码不能按预期工作。据我所知,Graphics.DrawImage 方法似乎存在问题,它无法正确处理我的九个切片图像。所以我的问题是如何补偿在紧凑型框架上运行我
当您将名为 logo.png 的图片放在与此 html 文件相同的目录中并尝试在 Web 浏览器中运行它时,该图片在 IE 中仅出现 10 次刷新中的 1 次,而在Firefox,但在进一步刷新后会出
当我使用 Graphics.DrawImage 绘制图像并以比原始图像更大的尺寸绘制时,它最终变得有点太小了。您可以在下图中看到这一点: 绿线不应该是可见的,也不是图像的一部分。相反,它们被绘制在图像
import java.awt.*; import javax.swing.*; public class Main { JFrame jf; Main() {
我正在尝试使用 Java 面板显示图像,但行不通。该代码没有给出任何异常和/或错误,但图像没有加载。该图像确实存在,我也尝试过 .jpg,但效果不佳。 package feupcraftproject
我需要在内存中保存约 50 个图像(这是必须的,也是我无法改变的条件)。但是,有时我想在 JFrame 上绘制这些图像的缩略图。 使用 graphics.drawImage(picture, 100,
最近我一直在构建一个在JFrame上绘制图像的应用程序,一切都很棒,但是当窗口离开屏幕时,绘制的图像就消失了,我一直想知道是否有办法避免那?谢谢 import javax.swing.*; 导入 ja
我有一个扩展 jlabel 并使用 paintComponent 在其上绘制的类,如下所示这是 paintPhotos.java package myApp; import java.awt.*; i
我正在玩 JavaFX,在 start(Stage theStage) 类中我有以下代码: /*... Scene, stage, canvas ...*/ GraphicsContext gc =
我正在尝试编写一些简单的游戏,但我一直在 Canvas 上绘制资源。我创建了一个 AssetsLoader“类”来加载图像并将其保存为图像对象。一开始我只想绘制一些加载的资源。但是drawImage函
我使用drawImage来“调整”图像的大小; img.onload = function(){ var width = img.width * 0.16,
我正在使用drawImage()。这是我的代码。 imDiv 包含一个内联 svg。 var c =document.getElementById( 'cvs' ); var ctx =c.g
我是一名优秀的程序员,十分优秀!