【发布时间】:2015-02-08 00:15:09
【问题描述】:
所以我正在为一个班级做一个项目。我已经为这个问题苦苦挣扎了一段时间。下面的代码是一个开始屏幕,当按下回车键时(当atTitle 变为假时)我希望它绘制下一个图像。问题在于,当它变为假时,我想不出一种方法来绘制下一张图像。我试过使用ifs和whiles。主要问题是您显然在 if 语句中添加了另一个 public void paintComponent。而且我不能将Graphics g 变量带到KeyPressed 方法中。
我被卡住了。
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
AffineTransform at = new AffineTransform();
g2.setTransform(at);
if (atTitle == true) {
g.drawImage(titlescreen, 0, 0, this);
if (start_visible == true) {
g.drawImage(start_symbol, -70, 30, this);
jf.addKeyListener(this);
}
}
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
//int keyCode = e.getKeyCode();
if (atTitle == true) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
atTitle = false;
System.out.println("It Works.");
}
}
}
【问题讨论】:
-
与其走这条路,你需要看看场景图并了解它们是如何运作的。这将需要一些前期投资,但从长远来看,如果你追求制作一款真正的游戏,这将是完全值得的。 (看一看:docs.oracle.com/javafx/2/scenegraph/jfxpub-scenegraph.htm)
-
这似乎很有趣,我可能会看看它,因为它看起来是件好事。但目前我有时间限制。
-
即使您不使用 javafx 场景图,您仍然需要在
paintComponent方法中构建需要渲染的对象图;然后keyPressed事件可以修改该图形并调用一个方法来指示画布重新绘制。