gpt4 book ai didi

java - 如何在 KeyListener 中调用 Graphics 方法?

转载 作者:行者123 更新时间:2023-11-30 02:31:53 24 4
gpt4 key购买 nike

提前,我想说有很多类似的帖子,但是,它们都不适用于我,或者它们实际上根本没有任何答案,并且已经过时了,这意味着可能会有新的 java可以帮助我解决问题的功能。

无论如何,我想制作一款有网 Racket 的游戏。当然,他们必须轮换。为了旋转,我必须在 KeyListener 中调用 Graphics2D 方法。如果不在我的关键监听器方法中添加新的 Graphics2D 变量,我该如何做到这一点?

以下是我实现此目标的所有方法:

        public void draw(Graphics2D g2d) {
g2d.drawImage(getPaddleImg(), x, y, null);
}

public static Image getPaddleImg() {
ImageIcon ic = new ImageIcon("C:/Users/Elliot/Desktop/Eclipse Game Tennis/paddle.png");
return ic.getImage();
}

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();

if(key==KeyEvent.VK_W){
g2d.rotate(Math.toRadians(5));
} else if(key==KeyEvent.VK_W) {
g2d.rotate(Math.toRadians(-5));
}

public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();

if(key==KeyEvent.VK_W){
g2d.rotate(Math.toRadians(0));
} else if(key==KeyEvent.VK_W) {
g2d.rotate(Math.toRadians(0));
}
}

我知道,由于 KeyPressed()KeyReleased() 方法内部的 g2d,这段代码会给我一个错误。我如何在这两个方法中调用 g2d ?或者我如何在 draw() 方法中做同样的事情?

最佳答案

错误的方式:可以使用Component.getGraphics()来获取图形对象。

正确的方法:所有绘制都应该在 paint(Component) 方法内完成。这是因为用户可以随时调整窗口大小/打开/关闭窗口。在您的KeyListener(也研究键绑定(bind))中,您应该更新关于如何绘制球员/ Racket 的设置,然后调用repaint()

关于java - 如何在 KeyListener 中调用 Graphics 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44100390/

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