Ho cercato di capire come far muovere un'immagine visibile in diagonale in una finestra dell'applet.Come spostare un'immagine visibile in diagonale?
Se si preme su, giù, sinistra o destra l'immagine (una gif) si sposta di conseguenza, tuttavia se si tenta di premere due tasti contemporaneamente (in alto e a destra contemporaneamente, ad esempio) l'immagine si sposta solo in la direzione che hai premuto per secondo (anche se premi i tasti allo stesso tempo c'è ancora un ritardo microscopico).
Potrebbe esserci un modo semplice per risolvere ciò di cui non sono a conoscenza, o forse una soluzione alternativa che qualcuno ha capito ... Apprezzo qualsiasi aiuto o consiglio che possa essere dato.
di ringraziamento
eroe della classe (questa classe definisce ciò che il "Hero" è, in questo caso un uomo semplice di pixel, e quello che può fare)
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);
}
}
classe HeroGame (questa classe crea la "Hero" e specifica la posizione, così come quello che le chiavi sono usate per farlo muovere)
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);
}
}
}
di ringraziamento, una volta di più per prendere il tempo di leggere questo e spera aiuterà.
Ok, grazie controllerò quelli fuori; se noterò di cosa si tratta, scriverò sicuramente. – Greywarden