【发布时间】:2013-01-06 21:39:55
【问题描述】:
我正在尝试用 Java 制作一种 Space Invaders 游戏,首先是让 PNG 宇宙飞船在屏幕上移动。它出现在它应该去的地方,只是它拒绝移动。该程序编译得很好,eclipse没有给我任何错误/警告。谁能告诉我我做错了什么?
这是我的代码:
import java.awt.*;
import java.net.*;
import java.awt.geom.*;
import java.applet.*;
import java.awt.event.*;
public class DrawImage extends Applet implements KeyListener{
private static final long serialVersionUID = 1L;
private Image image;
private int keycode;
AffineTransform identity = new AffineTransform();
private boolean keyleft = false;
private boolean keyright = false;
private URL getURL(String filename){
URL url = null;
try
{
url = this.getClass().getResource(filename);
}
catch(Exception e)
{
e.printStackTrace();
}
return url;
}
public void init()
{
image = getImage(getURL("spaceship.png"));
addKeyListener(this);
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
//fill background with black
AffineTransform trans = new AffineTransform();
g2d.setColor(Color.GREEN);
g2d.fillRect(0,0,getSize().width,getSize().height);
g2d.drawImage(image,320,240,this);
trans.setTransform(identity);
if(keyright == true)
{
trans.translate(-10,0);
keyleft = false;
}
else if(keyleft == true)
{
trans.translate(10,0);
keyright = false;
}
}
public void keyPressed(KeyEvent e)
{
keycode = e.getKeyCode();
if(keycode == KeyEvent.VK_LEFT)
{
keyleft = true;
}
else if(keycode == KeyEvent.VK_RIGHT)
{
keyright = true;
}
repaint();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}
【问题讨论】:
-
小程序是否可聚焦?它有焦点吗?考虑 1) 在第三个千年中超越 AWT。 2)
KeyListener上的键绑定 3)JFrame而不是JApplet4) 使用 Java Web Start 从链接启动框架。 -
我从一本书改编而来——不知道可聚焦是什么意思,因为它没有被提及。在 AWT 上摆动?这意味着什么?我希望它是一个小程序,以便它可以在网络上运行
-
本书出版于2009年
-
这本书具体是什么书?我对它的看法随着每条新评论而下降。真的,摆脱它 - 它会浪费你很多时间。
-
Jonathon S. Harbour 的 Java 游戏编程入门第二版。它实际上是一本非常好的书,帮助我理解了很多。你为什么不用你认为能让它们一次性工作的东西来回答我的问题之一,而不是不断批评我的技术和资源?