我在使用圖像而不是矢量圖形開發我的第一個Java遊戲時遇到了一些麻煩。目前,我正在嘗試使用AffineTransform
對象在按鍵上移動圖像。只有它不會移動。我究竟做錯了什麼? 我還沒有嘗試過使用線程,但我不知道如何做到這一點。如果您認爲這會有所幫助,請將其納入您的回答。AffineTransform在按鍵上不移動圖像
這裏是我的代碼:
import java.awt.*;
import java.net.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.applet.*;
public class DisplayImage extends Applet implements KeyListener{
AffineTransform identity = new AffineTransform();
boolean left = false;
boolean right = false;
public URL getURL(String filename)
{
URL url = null;
try
{
url = this.getClass().getResource(filename);
}
catch(Exception e){e.printStackTrace();}
return url;
}
private Image image;
public void init()
{
image = getImage(getURL("spaceship.png"));
addKeyListener(this);
}
public void update(Graphics g){paint(g);}
public void paint(Graphics g)
{
AffineTransform trans = new AffineTransform();
trans.setTransform(identity);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.BLACK);
g2d.fillRect(0,0,getSize().width,getSize().height);
if(left==true)
{
trans.translate(-10,0);
left = false;
repaint();
}
if(right==true)
{
trans.translate(10,0);
right = false;
repaint();
}
g2d.drawImage(image,0,0,this);
}
public void keyPressed(KeyEvent e)
{
int keycode = e.getKeyCode();
switch(keycode)
{
case KeyEvent.VK_RIGHT:
right = true;
repaint();
case KeyEvent.VK_LEFT:
left = true;
repaint();
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}
是否有人可以發表評論或回答?我感覺到一個「風滾草」徽章正在朝我的方向前進。
您使用AffineTransform移動而不是標準世界座標系的任何特定原因?這可能有助於瞭解你的目標是什麼類型的遊戲,因爲這些機制有更好的方法。 – Nikki 2013-05-08 08:04:09
@Nikki我是一個完整的遊戲noob。如果有幫助,這是一個基於小程序的遊戲,我正在從書中進行調整,並正在操作圖像。這本書說這是一個很好的計劃。如果你有更好的解決方案,請告訴我! – imulsion 2013-05-08 09:33:46