Gre*_*den 6 java applet gif active-objects diagonal
我一直试图弄清楚如何在applet窗口中对角线移动可见图像.
如果按向上,向下,向左或向右按下图像(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);
}
}
Run Code Online (Sandbox Code Playgroud)
HeroGame类(此类创建"Hero"并指定位置,以及用于移动的键)
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
再次感谢您花时间阅读本文,并希望能给予帮助.
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |