我一直在试图弄清楚如何使可见图像在小程序窗口中对角移动。
如果您按向上、向下、向左或向右,图像(gif)会相应移动,但是如果您尝试同时按两个键(例如同时向上和向右),图像只会沿您按下的方向移动秒(即使您同时按下按键仍然存在微观延迟)。
可能有一种我不知道的简单方法可以解决此问题,或者可能有人已经找到了解决方法...我感谢可以提供的任何帮助或建议。
谢谢
英雄类(这个类定义了“英雄”是什么;在这种情况下是一个简单的像素人,以及他能做什么)
import objectdraw.*;
import java.awt.*;
public class Hero extends ActiveObject {
private DrawingCanvas canvas;
private VisibleImage player;
public Hero(Location initLocation, Image playerPic, DrawingCanvas aCanvas) {
canvas = aCanvas;
player = new VisibleImage(playerPic, canvas.getWidth()/3,
canvas.getWidth()/3, canvas);
start();
}
public void run()
{
}
public void move(double dx, double dy)
{
player.move(dx, dy);
}
}
HeroGame 类(该类创建“英雄”并指定位置,以及用于使他移动的键)
import objectdraw.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HeroGame extends WindowController implements KeyListener {
private Hero theHero;
private Image playerPic;
private Location initLocation;
public void begin() {
playerPic = getImage("player.gif");
canvas.addKeyListener ( this );
this.addKeyListener ( this );
requestFocusInWindow();
theHero = new Hero(initLocation, playerPic, canvas);
}
public void keyTyped( KeyEvent e ) { }
public void keyReleased( KeyEvent e ) { }
public void keyPressed( KeyEvent e ) {
if ( e.getKeyCode() == KeyEvent.VK_UP ) {
theHero.move(0,-5);
}
else if ( e.getKeyCode() == KeyEvent.VK_DOWN ) {
theHero.move(0,5);
}
else if ( e.getKeyCode() == KeyEvent.VK_LEFT ) {
theHero.move(-5,0);
}
else if ( e.getKeyCode() == KeyEvent.VK_RIGHT ) {
theHero.move(5,0);
}
}
}
再次感谢您花时间阅读本文并希望有所帮助。