Tôi đã cố gắng tìm ra cách làm cho một hình ảnh hiển thị di chuyển theo đường chéo trong một cửa sổ applet.Cách di chuyển hình ảnh có thể nhìn thấy theo đường chéo?
Nếu bạn nhấn lên, xuống, sang trái hoặc sang phải hình ảnh (gif) di chuyển tương ứng, tuy nhiên nếu bạn cố gắng bấm hai phím cùng một lúc (lên và cùng một lúc chẳng hạn) hình ảnh chỉ di chuyển trong hướng bạn nhấn thứ hai (ngay cả khi bạn nhấn các phím cùng một lúc vẫn còn một sự chậm trễ hiển vi).
Có thể có một cách đơn giản để khắc phục điều này mà tôi không biết, hoặc có lẽ một cách giải quyết mà ai đó đã tìm ra ... Tôi đánh giá cao bất kỳ trợ giúp hoặc lời khuyên nào có thể được đưa ra.
Thank-you
Hero Class (lớp này định nghĩa những gì các "anh hùng" là, trong trường hợp này một người đàn ông đơn giản pixel, và những gì ông có thể làm)
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 lớp (lớp này tạo ra các "anh hùng" và xác định vị trí, cũng như những gì các phím được sử dụng để làm cho anh ta di chuyển)
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);
}
}
}
Thank-you một lần nữa đã dành thời gian để đọc và hy vọng giúp đỡ.
Ok, cảm ơn bạn tôi sẽ kiểm tra những điều đó; nếu tôi nhận thấy nó là gì thì tôi chắc chắn sẽ đăng nó. – Greywarden