gpt4 book ai didi

java - 如何对角线移动可见图像?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:50 26 4
gpt4 key购买 nike

我一直在努力弄清楚如何使可见图像在小程序窗口中沿对角线移动。

如果您按向上、向下、向左或向右,图像 (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);
}
}
}

再次感谢您花时间阅读本文并希望对您有所帮助。

最佳答案

我建议您使用 Swing (JApplet) 和键绑定(bind)。参见 Motion Using the Keyboard有关使用 KeyListener 的问题以及处理同时按下多个键的解决方案。

关于java - 如何对角线移动可见图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com