作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
提前,我想说有很多类似的帖子,但是,它们都不适用于我,或者它们实际上根本没有任何答案,并且已经过时了,这意味着可能会有新的 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/
我是一名优秀的程序员,十分优秀!