gpt4 book ai didi

java - 在运行时显示的小程序中的随机数更新每一帧,或被背景图像 overdraw

转载 作者:行者123 更新时间:2023-11-30 06:27:05 25 4
gpt4 key购买 nike

编辑:使用 awt...

我试图在基于小程序的数学游戏中显示随机数,但遇到了问题。根据调用方法的位置,会发生以下两种情况之一:

  • 数字生成并正确显示,不会自动更新每一帧但在运行时更新时每一帧都会被背景和插图所吸引,或者...
  • 屏幕上显示的数字显示在背景元素上方,但每帧都会重新绘制。

快速说明:

private int setNumberOne() {

return rand.nextInt(11) + 2;
}

private int setNumberTwo() {

return rand.nextInt(11) + 2;
}

private int setAnswer() {

return setNumberTwo() * setNumberOne();
}

private void displayOutput() {

Graphics2D g2d = graphics();

int one = setNumberOne();
int ans = setAnswer();

setNumberTwo();

g2d.setColor(Color.WHITE);
g2d.drawString(one + " x ? = " + ans, 480, 480);
}

在初始化方法中调用此函数会显示一个静态问题,我可以在满足特定触发器时在其他地方更新该问题,但是 所有 其他内容都会被更新事件绘制在它上面,使其不可见。我设法看到此工作的唯一方法是从游戏中删除其他图像以进行测试。

有没有办法在小程序中设置 GUI 元素的“优先级”?

我目前正在考虑尝试将 displayOutput() 方法包含在它自己的线程中,但我对 Java 不是很熟悉,而且事实证明它很难解决。

我也试图让背景在运行时不更新,但结果是移动的游戏对象在屏幕上留下了痕迹。

我错过了什么?如果有人对如何正确实现它有任何建议,我将很高兴听到他们的意见。

更新:“...如果是 AWT,则在 [...] 组件的 paint(...) 方法中绘制,并使用 JVM 传入的 Graphics 对象” -

已解决,谢谢!

最佳答案

不要对您的图形组件使用 getGraphics(),因为这将返回一个非持久性对象,该对象将在下一次重绘时被覆盖。如果这是一个 Swing 应用程序(你不说),而是在 JComponent 的 paintComponent(...) 方法中绘制,如果是 Component 的 paint(...) 方法,如果AWT,并使用JVM传入的Graphics对象。主要阅读有关如何使用 Java 绘图的教程,因为那里已经对此进行了很好的解释。

关于java - 在运行时显示的小程序中的随机数更新每一帧,或被背景图像 overdraw ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659758/

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